flash on 2012-11-27

by Caiim.
♥0 | Line 86 | Modified 2012-11-27 16:02:12 | MIT License
play

ActionScript3 source code

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

package {
    import flash.filters.ColorMatrixFilter;
    import flash.events.TimerEvent;
    import flash.utils.Timer;
    import flash.geom.Rectangle;
    import flash.display.BitmapData;
    import flash.events.Event;
    import flash.display.MovieClip;
    import flash.events.MouseEvent;
    import flash.display.Bitmap;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        
        private var objectLayer:Sprite = new Sprite();
        private var bulletLayerBD:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0);
        private var bulletLayer:Bitmap = new Bitmap(bulletLayerBD);
        private var bulletVec:Vector.<Bullet> = new Vector.<Bullet>();
        
        private var :ColorMatrixFilter = new ColorMatrixFilter(1, 0, 0, 0, 0,
                                                                              0, 1, 0, 0, 0,
                                                                              0, 0, 1, 0, 0,
                                                                              0, 0, 0, 0.8, -20);
        
        private var updateTimer:Timer = new Timer(10);
        
        private var target:MovieClip = new MovieClip();
        
                public function FlashTest() {
            // write as3 code here..
            setupStage();
            
            setupListeners();
            
        }
        
        private function setupStage():void
        {
            addChild(bulletLayer);
            addChild(objectLayer);
            
            target.graphics.beginFill(0x00ff00, 1);
            target.graphics.drawRect(0, 0, 10, 10);
            target.graphics.endFill();
            target.x = target.y = 100;
            objectLayer.addChild(target);            
            
        }

        private function setupListeners():void
        {
            stage.addEventListener(MouseEvent.CLICK, addBullets);
            updateTimer.addEventListener(TimerEvent.TIMER, update);
            updateTimer.start();
        }
        
        private function addBullets(e:MouseEvent):void
        {
            for(var i:int = 0;i<360;i+=60)
            {
                var b:Bullet = new Bullet(e.stageX, e.stageY, 10, i, 5, target);
                bulletVec.push(b);
            }

        }
        
        private function update(e:Event):void
        {
            bulletLayer.bitmapData.applyFilter(fadeColorFilter);
            for each(var b:Bullet in bulletVec)
            {
                bulletLayer.bitmapData.fillRect(new Rectangle(b.x, b.y, 10, 10), 0xffffff);
                b.update();
                
            }
        }


        
    }
    
}

class Bullet
{
    public var x:int = 0;
    public var y:int = 0;
    private var speedX:Number = 0;
    private var speedY:Number = 0;
    private var turnPower:Number = 1;
    private var target:Object = null;
    
    public function Bullet(x:int, y:int, distance:int, angle:Number, speed:Number, target:Object)
    {
        this.x = x + Math.cos(angle) * distance;
        this.y = y + Math.sin(angle) * distance;
        this.speedX = Math.cos(angle) * speed;
        this.speedY = Math.sin(angle) * speed;
        this.target = target;
    }
    
    public function update():void
    {
        var angle:Number = Math.atan2(target.y - y, target.x - x);
        this.speedX += Math.cos(angle) * turnPower;
        this.speedY += Math.sin(angle) * turnPower;
        this.x += speedX;
        this.y += speedY;
        
    }

}