flash on 2010-11-15
♥0 |
Line 48 |
Modified 2010-11-15 16:19:39 |
MIT License
archived:2017-03-30 04:35:03
ActionScript3 source code
/**
* Copyright bkzen ( http://wonderfl.net/user/bkzen )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/bLa6
*/
package
{
import com.bit101.components.Label;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.events.Event;
import flash.geom.Matrix;
import flash.geom.Point;
/**
*
*/
public class Test2 extends Sprite
{
private var cache:BitmapData;
private var cnt:int;
private var bmd:BitmapData;
private var alphaBmd:BitmapData;
public function Test2()
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e: Event = null): void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
//
var label: Label = new Label(null, 0, 0, "test");
label.draw();
bmd = new BitmapData(label.width << 2, label.height << 2, true, 0);
cache = new BitmapData(label.width << 2, label.height << 2, true, 0);
cache.draw(label, new Matrix(4, 0, 0, 4));
alphaBmd = new BitmapData(cache.width, cache.height, true, 0xFF000000);
alphaBmd.lock();
addChild(new Bitmap(bmd));
cnt = 45;
addEventListener(Event.ENTER_FRAME, loop);
}
private function loop(e:Event):void
{
bmd.lock();
bmd.fillRect(bmd.rect, 0);
alphaBmd.fillRect(alphaBmd.rect, (cnt / 45 * 0xFF & 0xFF) << 0x18);
bmd.copyPixels(cache, cache.rect, new Point(), alphaBmd, new Point(), true);
bmd.unlock();
if (cnt-- == 0)
{
removeEventListener(Event.ENTER_FRAME, loop);
}
}
}
}