/**
* 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;
}
}