パーティクル
/**
* Copyright matsu4512 ( http://wonderfl.net/user/matsu4512 )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/uNDU
*/
package
{
import __AS3__.vec.Vector;
import flash.display.BlendMode;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.filters.BlurFilter;
[SWF(backgroundColor=0x000000)]
public class Sample2 extends Sprite
{
// particleを保管するための配列
private var arrays:Vector.<particle>;
public function Sample2()
{
stage.scaleMode=StageScaleMode.NO_SCALE;
stage.align=StageAlign.TOP_LEFT;
stage.frameRate=40;
// FrameRate:1秒間に計算する回数
// 配列の初期化
arrays = new Vector.<particle>();
// イベントの追加
stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove);
addEventListener(Event.ENTER_FRAME, onFrame);
}
private function onFrame(e:Event):void
{
// 配列の長さを獲得
var i:int=arrays.length;
// 配列の長さの分だけループ
while(i)
{
i--;
// 配列から要素を取りだす
var p:particle = arrays[i] as particle;
p.x+=p.vx;
p.y+=p.vy;
p.z+=p.vz;
p.rotationX += 5;
p.rotationY += 3;
//vyの更新
p.vx+=0.8;
//アルファ値の変更
p.alpha-=0.01;
// アルファ値がゼロなら削除する
if (p.alpha <= 0)
{
// 画面から削除
removeChild(p);
// 配列からも削除
arrays.splice(i, 1);
// ヌルを代入
p=null;
}
}
}
private function onMove(e:MouseEvent):void
{
var p:particle=new particle(mouseX, mouseY, 0, 6 * Math.random() - 3, 6 * Math.random() - 3, -20 * Math.random(),
0xffffff * Math.random());
addChild(p);
// フィルタとか追加
// p.filters=[new BlurFilter(10, 10, 1)];
p.blendMode=BlendMode.ADD;
// 配列に格納
arrays.push(p);
}
}
}
import flash.display.Sprite;
import flash.filters.BlurFilter;
// クラス「Particle」
// Spriteを継承したクラスを作成する
class particle extends Sprite
{
// x方向とy方向とz方向の移動量
public var vx:Number;
public var vy:Number;
public var vz:Number;
// コンストラクタ
public function particle(x:Number, y:Number, z:Number, vx:Number, vy:Number, vz:Number, color:uint)
{
// 変数の初期化
this.x=x;
this.y=y;
this.z=z;
this.vx=vx;
this.vy=vy;
this.vz=vz;
// 円を書く
graphics.beginFill(color, 1);
graphics.drawCircle(0, 0, 30 * Math.random() + 3);
graphics.endFill();
}
}