flash on 2013-5-17
♥0 |
Line 73 |
Modified 2013-05-17 19:57:26 |
MIT License
archived:2017-03-30 22:53:04
ActionScript3 source code
/**
* Copyright mutantleg ( http://wonderfl.net/user/mutantleg )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/ouxI
*/
package {
import flash.events.Event;
import flash.display.Sprite;
public class FlashTest extends Sprite {
public function FlashTest() {
// write as3 code here..
stage.addEventListener(Event.ENTER_FRAME, onEnter);
}//ctor
public var px:Number = 200;
public var py:Number = 200;
public var pa:Number = 0;
public var vx:Number = 0;
public var vy:Number = 0;
public var kx:Number = 200;
public var ky:Number = 200;
public function onEnter(e:Event):void
{
var mx:Number;
var my:Number;
mx = mouseX;
my = mouseY;
graphics.clear();
graphics.lineStyle(2, 0);
graphics.drawCircle(mx, my, 8);
kx += (mx - kx) * 0.05;
ky += (my - ky) * 0.05;
graphics.drawCircle(kx, ky, 4);
px += vx;
py += vy;
var ta:Number;
ta = Math.atan2(ky - py, kx - px);
graphics.drawCircle(px, py, 16);
graphics.moveTo(px, py);
graphics.lineTo(px+Math.cos(ta)*8, py+Math.sin(ta)*8);
pa = angLerpRad(pa, ta, 0.2);
graphics.moveTo(px, py);
graphics.lineTo(px+Math.cos(pa)*8, py+Math.sin(pa)*8);
vx += Math.cos(pa)*0.28;
vy += Math.sin(pa)*0.28;
//vy += 0.2;
vx *= 0.99;
vy *= 0.99;
var wx:Number;
wx = 2;
if (vx > wx) { vx = wx;} if (vx <-wx) { vx = -wx;}
if (vy > wx) { vy = wx;} if (vy <-wx) { vy = -wx;}
px += vx;
py += vy;
}//onenter
/**
//interpolate
//from [a] angle to [b] by [d] percentage
**/
public static function angLerpRad(a:Number, b:Number, d:Number=0.1):Number
{
var c:Number;
if ( (a - b) > 3.1415 )
{
c = b + 6.28;
a = a + (c - a) * d; //0.1f;
if (a > 6.28) a -= 6.28;
}
else
{
if ( (a - b) < -3.1415 )
{
c = b - 6.28;
a = a + (c - a) * d; //0.1f;
if (a < 0) a += 6.28;
}
else
{
a = a + (b - a) * d; //0.1f;
}//endif nsted
}//endif
return a;
}//anglerprad
}//classend
}