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

勉強してたらコレでマシンがフリーズっとくらぁ!

花火の勉強
Get Adobe Flash player
by sdkfz181tiger 03 Mar 2010
    Embed
/**
 * Copyright sdkfz181tiger ( http://wonderfl.net/user/sdkfz181tiger )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/8tV5
 */

//花火の勉強
package{
	import flash.events.Event;
	import flash.events.TimerEvent;
	import flash.display.Sprite;
	import flash.display.BitmapData;
	import flash.display.Bitmap;
	import flash.display.BlendMode;
	import flash.display.PixelSnapping;
	import flash.filters.BlurFilter;
	import flash.geom.ColorTransform;
	import flash.geom.Matrix;
	import flash.geom.Point;
	import flash.geom.Rectangle;
	import flash.utils.Timer;
	[SWF(width="465",height="465",backgroundColor="0x000000",flameRate="30")]
	
	public class Index extends Sprite{
		private const WIDTH:Number = 465;
		private const HEIGHT:Number = 465;
		
		private var _particles:Array;
		private var _canvas:BitmapData;
		private var _glow:BitmapData;
		private var _rect:Rectangle;
		private var _cTra:ColorTransform;
		private var _timer:Timer;
		
		private var _sx:Number;
		private var _sy:Number;
		
		public function Index(){
			init();
		}
		private function init():void{
			_particles = [];
			//キャンバス
			_canvas = new BitmapData(WIDTH,HEIGHT,false,0x0);
			addChild(new Bitmap(_canvas)) as Bitmap;
			//グロー
			_glow = new BitmapData(WIDTH/4,HEIGHT/4,false,0x0);
			var _bm:Bitmap = addChild(new Bitmap(_glow,PixelSnapping.NEVER,true)) as Bitmap;
			_bm.scaleX = _bm.scaleY = 4;
			_bm.blendMode = BlendMode.ADD;
			//Rect
			_rect = new Rectangle(0,0,WIDTH,HEIGHT);
			_cTra = new ColorTransform(.8,.8,.9,1.0);
			
			this.stage.addEventListener(Event.ENTER_FRAME,onEFrame);
			
			_timer = new Timer(1000);
			_timer.addEventListener(TimerEvent.TIMER,onTEvent);
			_timer.start();
		}
		private function onTEvent(event:TimerEvent):void{
			(_cTra.redMultiplier > 0.9)? _cTra.redMultiplier = 0.8 : _cTra.redMultiplier += 0.01;
			hanabi();
		}
		private function hanabi():void{
			var _i:int = 200;
			_sx = Math.random() * WIDTH;
			_sy = Math.random() * HEIGHT/3;
			while(_i--) createParticle();
		}
		private function createParticle():void{
			var _p:Particle = new Particle();
			_p.x = _sx;
			_p.y = _sy;
			var _radius:Number = Math.sqrt(Math.random()) * 20;
			var _angle:Number = Math.random() * (Math.PI) * 2;
			_p._vx = Math.cos(_angle) * _radius;
			_p._vy = Math.sin(_angle) * _radius;
			_particles.push(_p);
		}
		private function onEFrame(event:Event):void{
			update();
		}
		private function update():void{
			_canvas.lock();
			_canvas.applyFilter(_canvas,_rect,new Point(),new BlurFilter(1,1));
			_canvas.colorTransform(_rect,_cTra);
			var _i:int = _particles.length;
			while(_i--){
				var _p:Particle = _particles[_i];
				_p._vy += 0.2;
				_p._vx *= 0.9;
				_p._vy *= 0.9;
				_p.x += _p._vx;
				_p.y += _p._vy;
				_canvas.setPixel32(_p.x, _p.y, _p._c);
				if((_p.x > stage.stageWidth || _p.x < 0) || (_p.y < 0 || _p.y > stage.stageHeight) || Math.abs(_p._vx) < .01 || Math.abs(_p._vy) < .01){
					this._particles.splice(_i,1);
				}
			}
			_canvas.unlock();
			_glow.draw(_canvas,new Matrix(0.25,0,0,0.25));
		}
	}
}

class Particle{
	public var x:Number = 0;
	public var y:Number = 0;
	public var _vx:Number = 0;
	public var _vy:Number = 0;
	public var _c:uint = 0xFFFFFFFF;
	
	public function Particle(){
	}
}