※現在、「wonderfl build flash online」求人コンテンツ制作に関してのアンケートを実施中です!みなさまのお力添えを頂いて、続々とアンケート結果が集まっていますが、まだまだ募集しております。ご協力のほど、どうぞよろしくお願いいたします!
wonderfl運営事務局
→アンケートページ(※ログインしてからお答えいただけるようになっています。)
キラメキのようななにか forked from: キラメキのようななにか
- // forked from soundkitchen's キラメキのようななにか
- package
- {
- import flash.display.Bitmap;
- import flash.display.BitmapData;
- import flash.display.BlendMode;
- import flash.display.Graphics;
- import flash.display.Shape;
- import flash.display.Sprite;
- import flash.events.Event;
- import flash.events.MouseEvent;
- import flash.filters.BitmapFilter;
- import flash.filters.BitmapFilterQuality;
- import flash.filters.BlurFilter;
- import flash.geom.Point;
- [SWF(frameRate=60, width=500, height=500, backgroundColor=0x000000)]
- public class Main extends Sprite
- {
- private static var _zero:Point = new Point();
- private var _canvas:Shape;
- private var _film:BitmapData;
- private var _filter:BitmapFilter;
- private var _mouseDownFlag:Boolean;
- private var _particles:Array;
- public function Main()
- {
- addEventListener(Event.ADDED_TO_STAGE, initialize);
- }
- private function initialize(evt:Event):void
- {
- removeEventListener(evt.type, arguments.callee);
- Particle.initialize(stage);
- _particles = [];
- _mouseDownFlag = false;
- _canvas = new Shape();
- _filter = new BlurFilter(6, 6, BitmapFilterQuality.MEDIUM);
- _film = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0);
- addChild(new Bitmap(_film));
- addEventListener(Event.ENTER_FRAME, step);
- stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
- stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
- }
- private function step(evt:Event):void
- {
- var i:int,
- g:Graphics,
- p:Particle;
- if (_mouseDownFlag)
- {
- for (i=0; i<10; i++)
- {
- addParticle();
- }
- }
- g = _canvas.graphics;
- g.clear();
- for each (p in _particles)
- {
- p.update();
- g.beginFill(p.color);
- g.drawCircle(p.x, p.y, 1);
- g.endFill();
- if (!p.isAlive)
- {
- i = _particles.indexOf(p);
- _particles.splice(i, 1);
- }
- }
- _film.lock();
- _film.applyFilter(_film, _film.rect, _zero, _filter);
- _film.draw(_canvas, null, null, BlendMode.ADD);
- _film.unlock();
- }
- private function mouseDownHandler(evt:MouseEvent):void
- {
- _mouseDownFlag = true;
- }
- private function mouseUpHandler(evt:MouseEvent):void
- {
- _mouseDownFlag = false;
- }
- private function addParticle():void
- {
- var i:int,
- len:Number,
- angle:Number;
- len = Math.random() * 5;
- angle = Math.random() * Math.PI * 2;
- _particles.push(new Particle(mouseX, mouseY, len, angle));
- }
- }
- }
- import flash.display.Stage;
- import flash.geom.Rectangle;
- class Particle
- {
- private static var _frameRate:Number;
- private static var _stageRect:Rectangle;
- private var _x:Number;
- private var _y:Number;
- private var _tick:uint;
- private var _len:Number;
- private var _angle:Number;
- private var _energy:Number;
- public static function initialize(stage:Stage):void
- {
- _frameRate = stage.frameRate;
- _stageRect = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight);
- }
- public function get x():Number
- {
- return _x;
- }
- public function get y():Number
- {
- return _y;
- }
- public function get color():uint
- {
- return (_energy * 0xFD) << 16|(_energy * 0xFE) << 8|(_energy * 0xAE);
- }
- public function get isAlive():Boolean
- {
- return _stageRect.contains(x, y);
- }
- function Particle(x:Number, y:Number, len:Number, angle:Number)
- {
- _x = x;
- _y = y;
- _len = len;
- _angle = angle;
- _tick = 0;
- _energy = 1;
- }
- public function update():void
- {
- _energy *= .98;
- _x += _len * Math.cos(_angle);
- _y += 9.8 * (++_tick / _frameRate) + _len * Math.sin(_angle);
- }
- }
notice: 


