BetweenAS3を使った残像の表現。
BetweenAS3の_blurFilterを使用した残像の表現。
残像処理の最後で使用する、BetweenAS3.removeFromParent(_this)がとても便利。
SAMPLE VIEW CODE
package {
import flash.display.*;
import flash.events.*
import flash.filters.*;
import flash.geom.*;
import frocessing.color.*;
public class NMain extends MovieClip {
//-------------------------------------------------------------------------------- Properties
private var _this:*;
private var _stage:Stage;
//-------------------------------------------------------------------------------- Constractor
public function NMain() {
_this = this;
_stage = stage;
_stage.scaleMode = StageScaleMode.NO_SCALE;
_stage.align = StageAlign.TOP_LEFT;
Init();
}
//-------------------------------------------------------------------------------- Function
/**
* initialize
*/
public function Init():void {
initmain();
}
/**
* initialize main
*/
private var _main:MovieClip;
private var addpnt:Point;
private var colorhsv:ColorHSV;
private var colcnt:int;
private var lastpnt:Point;
private function initmain():void {
_main = new MovieClip();
_main.x = Math.round(_stage.stageWidth / 2);
_main.y = Math.round(_stage.stageHeight / 2);
_this.addChild(_main);
addpnt = new Point();
lastpnt = new Point();
colorhsv = new ColorHSV();
colcnt = 0;
colorhsv.h = colcnt;
_stage.addEventListener(Event.ENTER_FRAME, mainaction);
_stage.addEventListener(MouseEvent.MOUSE_MOVE, mainaction2);
}
/** */
private function mainaction(eo:* = null):void {
colorhsv.h = colcnt;
var _line = new line();
_main.addChild(_line);
addpnt.x += (_main.mouseX - addpnt.x) * .4;
addpnt.y += (_main.mouseY - addpnt.y) * .4;
var currentpnt = new Point();
currentpnt.x = addpnt.x;
currentpnt.y = addpnt.y;
_line.Init(colorhsv.value, currentpnt, lastpnt);
lastpnt = currentpnt;
}
/** */
private function mainaction2(eo:* = null):void {
colcnt += 1;
if(colcnt > 360) colcnt -= 360;
}
}
}
package {
import flash.display.*;
import flash.events.*
import flash.geom.*;
import org.libspark.betweenas3.BetweenAS3;
import org.libspark.betweenas3.events.TweenEvent;
import org.libspark.betweenas3.tweens.*;
import org.libspark.betweenas3.easing.*;
public class line extends MovieClip {
//-------------------------------------------------------------------------------- Properties
private var _this:*;
//-------------------------------------------------------------------------------- Constractor
public function line() {
_this = this;
}
//-------------------------------------------------------------------------------- Function
/**
* initialize
*/
public function Init(col:uint, currentpnt:Point, lastpnt:Point):void {
var g = _this.graphics;
g.clear();
g.beginFill(col, 1);
g.drawCircle(currentpnt.x, currentpnt.y, 60);
g.endFill();
g.lineStyle(60, col);
g.moveTo(currentpnt.x, currentpnt.y);
g.lineTo(lastpnt.x, lastpnt.y);
var blurval_1 = 20;
var blurval_2 = 100;
var dt = 0;
var et = 1;
BetweenAS3.serial(
BetweenAS3.delay(BetweenAS3.tween(_this, { _blurFilter:{blurX:blurval_2, blurY:blurval_2}, alpha:0 }, { _blurFilter:{blurX:blurval_1, blurY:blurval_1}}, et, Quad.easeOut), dt),
BetweenAS3.removeFromParent(_this)
).play();
}
}
}