In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

Bitmap.draw()を使ってみる2

Bitmapにstageの絵柄を書き込む。
直前に描いた画像をちょっとずつ暗くすると、
残像が残ったようにみえる。
/**
 * Copyright umhr ( http://wonderfl.net/user/umhr )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/eyLP
 */

/*
Bitmapにstageの絵柄を書き込む。
直前に描いた画像をちょっとずつ暗くすると、
残像が残ったようにみえる。

*/
package {
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.geom.ColorTransform;
	
	import caurina.transitions.Tweener;

	public class Main extends Sprite {
		private var _sp:Sprite;
		private var _bitmap:Bitmap;
		private var _colorTransform:ColorTransform;

		public function Main() {
			
			_sp = new Sprite();
			_sp.graphics.beginFill(0xFF0000,1);
			_sp.graphics.drawRect(100,0,100,100);
			_sp.graphics.endFill();
			_sp.x=stage.stageWidth/2;
			_sp.y=stage.stageHeight/2;
			this.addChild(_sp);
			
			//bitmapの表示エリアを作っている。
			var bitmapData:BitmapData=new BitmapData(stage.stageWidth,stage.stageHeight);
			_bitmap=new Bitmap(bitmapData);
			this.addChild(_bitmap);
			
			//変色の内容。ちょっとだけ暗くしている。
			_colorTransform = new ColorTransform(1, 1, 1, 1, -0x5, -0x5, -0x5);
			
			this.addEventListener(Event.ENTER_FRAME,onEnter);
		}
		
		private function onEnter(event:Event):void {
			//Spriteを回転
			_sp.rotation++;
			
			//一度、真っ白に戻している。
			//_bitmap.bitmapData.fillRect(_bitmap.bitmapData.rect,0xFFFFFF);
			//前に描いた画像を変色している。
			_bitmap.bitmapData.colorTransform(_bitmap.bitmapData.rect,_colorTransform);
			//_bitmap.bitmapData.scroll(1,1);
			//stageの内容を書き込んでいる。
			_bitmap.bitmapData.draw(stage);
		}
	}
}