/**
* 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();
}
}