flash on 2011-6-23

by yama3
♥0 | Line 86 | Modified 2011-06-23 10:53:33 | MIT License
play

ActionScript3 source code

/**
 * Copyright yama3 ( http://wonderfl.net/user/yama3 )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/7oKZ
 */

package {
    import flash.display.Graphics;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.geom.Point;
    
    public class FlashTest extends Sprite {
        private var _data:/*Datum*/Array;
        
        public function FlashTest() {
            _data = new Array();
            this.addEventListener(Event.ENTER_FRAME, proc);            
        }
        
        private function proc(e:Event):void
        {
            create();
            update();
            draw();
        }
        
        private function create():void {
            for(var index:uint = 0; index < 5; ++index) {
                var pos:Point = new Point(232.5, 232.5);
                var rad:Number = Math.random() * Math.PI * 2;
                var speedLength:Number = 2;
                var speed:Point = new Point(Math.cos(rad) * speedLength, Math.sin(rad) * speedLength);
                var datum:Datum = new Datum(pos, speed, 0);
                _data.push(datum);
            }
        }
        
        private function update():void {
            for(var index:uint = 0; index < _data.length; ++index) {
                var datum:Datum = _data[index];
                
                datum.pos.x += datum.speed.x;
                datum.pos.y += datum.speed.y;
                datum.rotate += Math.PI * 2 + 0.04;
                
                if(datum.pos.x < 0
                || datum.pos.x > 465
                || datum.pos.y < 0
                || datum.pos.y > 465)
                {
                    _data.splice(index, 1);
                    --index;
                    continue;
                }
            }
        }
        
        private function draw():void {
            var g:Graphics = this.graphics;
            g.clear();
            g.beginFill(0x000000);
            g.drawRect(0, 0, 465, 465);
            g.endFill();
            
            g.lineStyle(1, 0xffffff);
            var size:Number = 4.0;
            
            for(var index:uint = 0; index < _data.length; ++index) {
                var datum:Datum = _data[index];
                g.moveTo(
                datum.pos.x + (Math.cos(datum.rotate) * size),
                datum.pos.y + (Math.sin(datum.rotate) * size)
                );
                g.lineTo(
                datum.pos.x + (Math.cos(datum.rotate + Math.PI) * size),
                datum.pos.y + (Math.sin(datum.rotate + Math.PI) * size)
                );
                g.moveTo(
                datum.pos.x + (Math.cos(datum.rotate + (Math.PI * 0.5)) * size),
                datum.pos.y + (Math.sin(datum.rotate + (Math.PI * 0.5)) * size)
                );
                g.lineTo(
                datum.pos.x + (Math.cos(datum.rotate - (Math.PI * 0.5)) * size),
                datum.pos.y + (Math.sin(datum.rotate - (Math.PI * 0.5)) * size)
                );
            }
        }
    }
}

import flash.geom.Point;

class Datum {
    public var pos:Point;
    public var speed:Point;
    public var rotate:Number;
    
    public function Datum(pos:Point, speed:Point, rotate:Number) {
        this.pos = pos;
        this.speed = speed;
        this.rotate = rotate;
    }

}