forked from: flash on 2010-11-15
forked from flash on 2010-11-15 (diff: 42)
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/3ZK0
*/
// forked from bkzen's flash on 2010-11-15
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.ColorTransform;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.utils.getTimer;
import com.actionscriptbible.Example;
/**
*
*/
public class Test2 extends Example
{
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(stage.stageWidth, stage.stageHeight, 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();
var bmp:Bitmap;
addChild(bmp = new Bitmap(bmd));
cnt = 0;
var i: int, n: int = 1000, t: int, p: Point = new Point(), colorTf: ColorTransform = new ColorTransform();
t = getTimer();
bmd.lock();
for (i = 0; i < n; i ++)
{
bmd.fillRect(bmd.rect, 0);
bmd.copyPixels(cache, cache.rect, p, null, null, true);
}
bmd.unlock();
trace(getTimer() - t);
cnt = 0;
t = getTimer();
bmd.lock();
for (i = 0; i < n; i ++)
{
cnt = (cnt + 1) % 45;
bmd.fillRect(bmd.rect, 0);
alphaBmd.fillRect(alphaBmd.rect, (cnt / 45 * 0xFF & 0xFF) << 0x18);
bmd.copyPixels(cache, cache.rect, p, alphaBmd, p, true);
}
bmd.unlock();
trace(getTimer() - t);
cnt = 0;
t = getTimer();
bmd.lock();
for (i = 0; i < n; i ++)
{
cnt = (cnt + 1) % 45;
bmd.fillRect(bmd.rect, 0);
colorTf.alphaMultiplier = cnt / 45;
bmd.draw(cache, null, colorTf, null, null, true);
}
bmd.unlock();
trace(getTimer() - t);
removeChild(bmp);
}
}
}