flash on 2009-8-10

by nyamogera
♥0 | Line 80 | Modified 2009-08-10 22:39:20 | MIT License
play

ActionScript3 source code

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

package {
	import flash.display.BlendMode;
	import flash.display.Graphics;
	import flash.display.Shape;
    import flash.display.Sprite;
	import flash.events.Event;
	import flash.filters.BlurFilter;
	
	  
	[SWF(width = "500", height = "500", backgroundColor = "0x000000", frameRate = "20")]
	
    public class FlashTest extends Sprite {
		
		private var afterImage:Afterimage;
		
		private var prevX:int;
		private var prevY:int;
		
        public function FlashTest() {
            // write as3 code here..
			afterImage = new Afterimage(0.9, 500, 500);
			addChild( afterImage );
			trace("a");
			
            addEventListener(Event.ENTER_FRAME, EnterFrame);
        }
		
		private function EnterFrame(e:Event):void 
		{
			var shape:Shape = new Shape();
			var g:Graphics;
		
			var blur : BlurFilter = new BlurFilter();
			blur.blurX = 10;
			blur.blurY = 10;
			shape.filters = [blur];
			
			g = shape.graphics;
			//g.beginFill(0xffff00, 1 );
			//g.drawCircle(mouseX, mouseY, 5 );
			g.lineStyle(30, 0x33ff33, 1);
			g.moveTo(prevX, prevY);
			g.lineTo(mouseX, mouseY);
			afterImage.Draw(shape);
			
			//	何かしら作業をした後で次へと
			afterImage.Next();
			
			prevX = mouseX;
			prevY = mouseY;

		}
		
		
    }
}
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BlendMode;
import flash.display.DisplayObject;
import flash.display.IBitmapDrawable;
import flash.geom.ColorTransform;
import flash.geom.Rectangle;

internal class Afterimage extends flash.display.Sprite
{
	private var _thin:Number;
	private var _buffer:BitmapData;
	private var _bitmap:Bitmap;
	private var _currentBmpData:BitmapData;
	
	private var _w:int;
	private var _h:int;
	
	public function Afterimage(thin:Number, w:int, h:int)
	{
		_thin = thin;
		_buffer = new BitmapData(_w = w, _h = h, true , 0x00FFFFFF);
		_bitmap = new Bitmap(_buffer);
		_currentBmpData = new BitmapData(w, h,true , 0x00FFFFFF);
		
		addChild( _bitmap);
	}
	
	public function Draw(source:IBitmapDrawable) : void
	{
		_currentBmpData.draw(source);
	}
	
	public function Next() : void
	{
		trace(_thin);
		var color : ColorTransform = new ColorTransform(1,1,1,_thin,0,0,0,0);
		var rect : Rectangle = new Rectangle(0,0,_w,_h);
		var tmp:BitmapData = new BitmapData(_w, _h, true, 0x00ffffff);
        tmp.draw(_buffer,null,color,BlendMode.NORMAL, rect, true);
				
		_buffer.dispose();
		_buffer = new BitmapData(_w,_h,true,0x00ffffff);
		_buffer.draw(tmp);
		_buffer.draw(_currentBmpData);
		
		_currentBmpData.dispose();
		_currentBmpData = new BitmapData(_w, _h, true , 0x00FFFFFF);
		
		_bitmap.bitmapData = _buffer;
	}
}