flash on 2012-11-13

by hemingway
♥0 | Line 205 | Modified 2012-11-13 03:34:28 | 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/kXq5
 */

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 heroSprite :Hero = new Hero(stage);
        
        public function Main()
        {
            stage.scaleMode = StageScaleMode.NO_SCALE;
            
            _init();
        }
        
        public function _init() :void
        {
            addChild(heroSprite);
            
            graphics.clear     ();
            graphics.lineStyle (1, 0, 0.75);
            graphics.drawRect  (0, 0, 800, 600);
        }
    }
}

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

// ------------------------------ ChildOf(stage);
class Hero extends Sprite
{
    internal 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;   
    
    internal var projectileSprite :Projectile = new Projectile();
    
    public function Hero($stage:Stage, $x:Number = (400 - (20 / 2)), $y:Number = (300 - (36 / 2)), $w:Number = 20, $h:Number = 36, $a:Number = 0.5, $c:Number = 0)
    {
        addEventListener(Event.ADDED_TO_STAGE, addedToStage);
        
        _s = $stage;
        
        _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       ();
    }
        
    public function addedToStage($e:Event) :void
    { 
        addChild(projectileSprite);
        
        addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
    }
    
    public function onMouseDown($e:MouseEvent) :void
    {
        _s.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
        _s.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
        
        projectileSprite.x = $e.stageX;
        projectileSprite.y = $e.stageY;
    }
        
    public function onMouseMove($e:MouseEvent) :void
    {
        projectileSprite.x = $e.stageX;
        projectileSprite.y = $e.stageY;
    }
        
    public function onMouseUp($e:MouseEvent) :void
    {
        _s.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
        _s.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp);
        
        projectileSprite.parcelV = new Point(projectileSprite.parcelP.x - projectileSprite.x, projectileSprite.parcelP.y - projectileSprite.y);
    }
    
    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 function get w() :Number
    { return _w }
    public override function get height() :Number
    { return _h }
    public function get h() :Number
    { return _h }
    public override function get alpha() :Number
    { return _a }
    public function get a() :Number
    { return _a }
    public function get c() :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 function set w($value:Number) :void
    { _w = $value; _init(); }
    public override function set height($value:Number) :void
    { _h = $value; _init(); }
    public function set h($value:Number) :void
    { _h = $value; _init(); }
    public override function set alpha($value:Number) :void
    { _a = $value; _init(); }
    public function set a($value:Number) :void
    { _a = $value; _init(); }
    public function set c($value:Number) :void
    { _c = $value; _init(); }
}

// ------------------------------ ChildOf(Hero);
class Projectile extends Sprite
{
    protected var _p:Point = new Point();
    protected var pV:Point = new Point();
    
    protected var _x:Number;
    protected var _y:Number;
    protected var _r:Number;
    protected var _a:Number;
    protected var _c:Number;
    
    internal var parcelSprite :Sprite = new Sprite();

    public function Projectile($x:Number = 400, $y:Number = 300, $r:Number = 3, $a:Number = 0.5, $c:Number = 0xFF0000)
    {
        addChild(parcelSprite);
        addEventListener(Event.ENTER_FRAME, applyVelocity);
        
        _p.x = $x;
        _p.y = $y;
        
        _x = $x;
        _y = $y;
        _r = $r;
        _a = $a;
        _c = $c;
        
        _init();
    }
    
    public function _init() :void
    {
        if (parcelV.x > -400 || parcelV.y > -300)
        {   
            parcelSprite.graphics.clear     ();
            parcelSprite.graphics.lineStyle (2, 0xFF0000, 0.25);
            parcelSprite.graphics.moveTo    (pV.x - x, pV.y - y);
            parcelSprite.graphics.lineTo    (_p.x, _p.y);
        }else{
            parcelSprite.graphics.clear     ();
            parcelSprite.graphics.lineStyle (2, 0xFF0000, 0.25);
            parcelSprite.graphics.moveTo    (x, y);
            parcelSprite.graphics.lineTo    (_p.x, _p.y);            
        }


        graphics.clear      ();
        graphics.beginFill  (_c, _a);
        graphics.drawCircle (_x, _y, _r);    
        graphics.endFill    ();
    }
    
    public function applyVelocity($e:Event) :void
    {
        //if (parcelV.x > 0 || parcelV.y > 0)
        //{   
            //pV.subtract(new Point(1, 1));
            _init();
        //}
    }
    
    public function get parcelP() :Point
    { return _p }
    public function get parcelV() :Point
    { return pV }
    
    public function set parcelP($value:Point) :void
    { _p = Point($value); _init(); }
    public function set parcelV($value:Point) :void
    { pV = Point($value); _init(); }

    public override function get x() :Number
    { return _x }
    public override function get y() :Number
    { return _y }
    public function get r() :Number
    { return _r }
    public override function get alpha() :Number
    { return _a }
    public function get a() :Number
    { return _a }
    public function get c() :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 function set r($value:Number) :void
    { _r = $value; _init(); }
    public override function set alpha($value:Number) :void
    { _a = $value; _init(); }
    public function set a($value:Number) :void
    { _a = $value; _init(); }
    public function set c($value:Number) :void
    { _c = $value; _init(); }
}

class Target extends Sprite
{
    public function Target()
    {
        graphics.clear();
        graphics.beginFill(0, 0.5);
        graphics.drawRect(1, 1, 1, 1);
        graphics.endFill();
    }
}