flash on 2012-11-14

by hemingway
[SWF(frameRate = 60, width = 800, height = 600)]
♥0 | Line 109 | Modified 2012-11-14 02:43:25 | MIT License
play

ActionScript3 source code

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

package
{
    import flash.display.*;
    import flash.events.*;
    import flash.geom.*;
    import flash.net.*;
    
    [SWF(frameRate = 60, width = 800, height = 600)]
    public class Main extends Sprite
    {
        internal var projSprite :Projectile = new Projectile(stage);
        
        public function Main()
        {
            stage.scaleMode = StageScaleMode.NO_SCALE;
            
            _init();        
        }
        
        public function _init() :void
        {
            addChild(projSprite);
            
            graphics.clear();
            graphics.lineStyle(1, 0, 0.75);
            graphics.drawRect(0, 0, 799, 599);
        }
    }
}

import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.net.*;

class Projectile extends Sprite
{
    protected var _s:Stage;
    protected var _x:Number;
    protected var _y:Number;
    protected var _w:Number;
    protected var _h:Number;
    protected var _a:Number;
    protected var _c:Number;
    
    public function Projectile($s:Stage, $x:Number = (400 - 7 / 2), $y:Number = (300 - 7 / 2), $w:Number = 7, $h:Number = 7, $a:Number = 0.5, $c:Number = 0)
    {
        addEventListener(Event.ADDED_TO_STAGE, addedToStage);     
           
        _s = $s;
        _x = $x;
        _y = $y;
        _w = $w;
        _h = $h;
        _a = $a;
        _c = $c;
        
        _init();
    }
    
    public function _init() :void
    {
        graphics.clear         ();
        graphics.beginFill     (_c, _a);
        graphics.drawRoundRect (_x, _y, _w, _h, 4);
        graphics.endFill       ();
        
    }
    
    internal var $dest: Point;
    internal var $vel:  Point;
    
    public function traverseStage() :void
    {
        $vel = new Point(($dest.x - x), ($dest.y - y));
        
        x += ($vel.x / 12);
        y += ($vel.y / 12);
        
        if ($vel.x && $vel.y == 0)
        { removeEventListener(Event.ENTER_FRAME, onEnterFrame) }
    }
    
    public function addedToStage($e:Event) :void
    {
        _s.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); 
    }
    
    public function onMouseDown($e:MouseEvent) :void
    {
        _s.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
        
        $dest = new Point(($e.stageX - (width / 2)), ($e.stageY - (height / 2)));
        addEventListener(Event.ENTER_FRAME, onEnterFrame);
    }
    
    public function onMouseUp($e:MouseEvent) :void
    {
        _s.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp);
    }
    
    public function onEnterFrame($e:Event) :void
    {
        traverseStage();
    }
    
    public override function get x() :Number
    { return _x }
    public override function get y() :Number
    { return _y }
    public override function get width() :Number
    { return _w }
    public override function get height() :Number
    { return _h }
    public override function get alpha() :Number
    { return _a }
    public function get color() :Number
    { return _c }
    
    public override function set x($value:Number) :void
    { _x = $value; _init(); }
    public override function set y($value:Number) :void
    { _y = $value; _init(); }
    public override function set width($value:Number) :void
    { _w = $value; _init(); }
    public override function set height($value:Number) :void
    { _h = $value; _init(); }
    public override function set alpha($value:Number) :void
    { _a = $value; _init(); }
    public function set color($value:Number) :void
    { _c = $value; _init(); }
}