残像実験

by pon_zu
♥0 | Line 53 | Modified 2010-04-30 00:45:19 | MIT License
play

ActionScript3 source code

/**
 * Copyright pon_zu ( http://wonderfl.net/user/pon_zu )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/hgIU
 */

package {
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.PixelSnapping;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.geom.ColorTransform;
	import flash.geom.Matrix;
        import flash.filters.BlurFilter;
	
	[SWF(width=480, height=480, backgroundColor=0x0)]

	public class Main extends Sprite {
		
		private var afterBitmapData:BitmapData = new BitmapData(800, 600, true, 0x00FFFFFF);
		private var afterImage:Bitmap = new Bitmap(afterBitmapData, PixelSnapping.AUTO, true);
		private var character:Character = new Character();
		
		public function Main() {
			addChild(afterImage);
			
			character.x = 200;
			character.y = 200;
                        character.filters = [new BlurFilter(10,10)];
			addChild(character);
			
			addEventListener(Event.ENTER_FRAME, onEnterFrame);
		}
		
		private function onEnterFrame(event:Event):void {
			character.move();

			afterBitmapData.colorTransform(afterBitmapData.rect, 
						new ColorTransform(1, 1, 1, 1, 0, 0, 0, -3));
			
			var mat:Matrix = new Matrix();
                        mat.scale(0.6, 0.6);
			mat.translate(character.x, character.y);
			afterBitmapData.draw(character, mat);
		}
		
	}
}

import flash.display.Sprite;
import flash.events.Event;

class Character extends Sprite {
	
	private var isStage:Boolean = false;
	
	public function Character() {
		graphics.beginFill(0x00FFFF);
		graphics.drawCircle(0, 0, 10);
		graphics.endFill();
		
		addEventListener(Event.ADDED_TO_STAGE, onAddedStage);
	}
	
	public function move():void {
                if(this.x >= stage.mouseX) this.x -= 1;
                else this.x += 1;
                
                if(this.y >= stage.mouseY) this.y -= 1;
                else this.y += 1;
	}
	
	private function onAddedStage(event:Event):void {
		isStage = true;
	}
	
}