一定時間で消える線
2010.12.22 水曜日
マウスの座標をオリジナルクラスの二次元配列で保存し白線を描画、1秒後配列から削除します。
This movie requires Flash Player 9
package {
import flash.display.Graphics;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.Point;
import flash.utils.getTimer;
public class Main extends MovieClip {
private var tracks:Vector.<Vector.<Track>>;
public function Main():void {
//初期化
tracks = new Vector.<Vector.<Track>>();
//リスナー登録
this.addEventListener(Event.ENTER_FRAME, Draw);
stage.addEventListener(MouseEvent.MOUSE_DOWN, Begin);
}
//ドラッグ開始
private function Begin(e:MouseEvent):void {
//更新
Update(mouseX, mouseY, getTimer(), true);
//リスナー登録
stage.addEventListener(Event.ENTER_FRAME, Move);
stage.addEventListener(MouseEvent.MOUSE_UP, Finish);
}
//ドラッグ中
private function Move(e:Event):void {
//更新
Update(mouseX, mouseY, getTimer(), false);
}
//ドラッグ終了
private function Finish(e:MouseEvent):void {
//更新
Update(mouseX, mouseY, getTimer(), false);
//リスナー解除
stage.removeEventListener(Event.ENTER_FRAME, Move);
stage.removeEventListener(MouseEvent.MOUSE_UP, Finish);
}
//更新
private function Update(_x:int, _y:int, _t:int, _s:Boolean):void {
//データ追加
if (!_s) _s = Boolean(tracks.length == 0);
if (_s) tracks.unshift(new Vector.<Track>());
tracks[0].unshift(new Track(_x, _y, _t));
}
//描画
private function Draw(e:Event):void {
//変数
var t:uint = getTimer();
var a:int = tracks.length;
var b:int;
var c:Boolean;
var i:int;
var j:int;
var g:Graphics = this.graphics;
//描画
g.clear();
if (a > 0) {
for (i = a - 1; i >= 0; i --) {
b = tracks[i].length;
c = true;
if (b > 0) {
for (j = b - 1; j >= 0; j --) {
if (t - tracks[i][j].t > 1000) {
tracks[i].splice(j, 1);
if (j == 0) tracks.splice(i, 1);
}
else {
if (c) {
c = false;
g.lineStyle();
g.moveTo(tracks[i][j].x, tracks[i][j].y);
g.beginFill(0xFFFFFF, 1.0);
g.drawCircle(tracks[i][j].x, tracks[i][j].y, 3);
g.endFill();
g.lineStyle(6, 0xFFFFFF, 1.0, false);
}
g.lineTo(tracks[i][j].x, tracks[i][j].y);
}
}
}
}
}
}
}
}
//軌跡クラス
class Track {
public var x:int;
public var y:int;
public var t:int;
public function Track(_x:int, _y:int, _t:int):void {
x = _x;
y = _y;
t = _t;
}
}
Posted by tmdf|ActionScript