In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

forked from: パーティクルシステムのサンプル

パーティクルシステムのサンプル
*
* マウスカーソルの位置からパーティクル(粒子)が無限に噴水のように放出されるサンプル。
Get Adobe Flash player
by hacker_yk666qry 02 Jan 2010
    Embed
/**
 * Copyright hacker_yk666qry ( http://wonderfl.net/user/hacker_yk666qry )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/hNuy
 */

// forked from autumngoodluck's パーティクルシステムのサンプル
// forked from autumngoodluck's MyTemplate
/*
 * パーティクルシステムのサンプル
 *
 * マウスカーソルの位置からパーティクル(粒子)が無限に噴水のように放出されるサンプル。
 */
package
{
    import flash.display.Sprite;
	import flash.events.Event;

    [SWF(width="465", height="465", backgroundColor="0x000000", frameRate="24")]
    public class ParticleSample extends Sprite
    {
		public function ParticleSample()
        {
			addEventListener(Event.ENTER_FRAME, loop, false, 0, true);
        }
        
        /*
         * 繰り返し処理
         *
         * 無限にパーティクル(粒子)をマウスカーソルの位置から上方向に放出する。
         */
		public function loop(event:Event):void
        {
			var particle:Particle = new Particle(mouseX,						// パーティクルの放出位置(x 座標)
			                                mouseY,						// パーティクルの放出位置(y 座標)
			                                Math.random() * 10 - 5,       // パーティクルの放出速度(x 方向)
			                                Math.random() * -15,			// パーティクルの放出速度(y 方向)
			                                0.3,							// 重力
			                                Math.random() * 0xFFFFFF);	// パーティクルの色
			addChild(particle);
        }
    }
}

import flash.display.Sprite;
import flash.events.Event;

/*
 * パーティクル(粒子)クラス
 */
class Particle extends Sprite
{
	// 速度
	private var _velX:Number;
	private var _velY:Number;
	
	// 重力
	private var _grav:Number;

	/*
	 * パーティクルの生成
	 *
	 * 引数
	 *   curX - パーティクルの放出位置(x 座標)
	 *   curY - パーティクルの放出位置(y 座標)
	 *   velX - パーティクルの放出速度(x 方向)
	 *   velY - パーティクルの放出速度(y 方向)
	 *   grav - 重力
	 *   col  - パーティクルの色
	 */	
	public function Particle(curX:Number, curY:Number, velX:Number, velY:Number, grav:Number, col:uint)
	{
		_velX = velX;
		_velY = velY;
		_grav = grav;
		
		// パーティクルを指定色で、半径 10 の円としてとりあえず描画する。
		// 位置、透明度、大きさは後で変更する。
		graphics.beginFill(col);
		graphics.drawCircle(0, 0, 10);
		graphics.endFill();
		
		// パーティクルの位置、透明度および大きさを変更する。
		x      = curX;
		y      = curY;
		alpha  = 0.8;
		scaleX = scaleY = Math.random() * 1.9 + 0.1;	// 大きさは、0.1 倍以上2.0 倍未満
		
		addEventListener(Event.ENTER_FRAME, loop, false, 0, true);
	}
	
	/*
	 * 繰り返し処理
	 *
	 * パーティクルを放出速度に従い動かす。なお、y 方向については重力を考慮する。
	 */
	private function loop(event:Event):void
	{
		// 重力による落下速度の変化
		_velY += _grav;
		
		// 移動
		x += _velX;
		y += _velY;
		if (x < 0 || x > stage.stageWidth || y > stage.stageHeight)
		{
			// 不要になったパーティクルの削除
			removeEventListener(Event.ENTER_FRAME, loop);
			parent.removeChild(this);
		}
	}
}