flash on 2016-3-5
♥0 |
Line 112 |
Modified 2016-03-05 08:10:39 |
MIT License
archived:2017-03-20 16:21:26
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/446Z
*/
package {
import flash.events.MouseEvent;
import flash.events.Event;
import flash.display.Sprite;
public class FlashTest extends Sprite {
public function FlashTest() {
stage.addEventListener(MouseEvent.MOUSE_DOWN, onMdown);
stage.addEventListener(MouseEvent.MOUSE_UP,onMup);
stage.addEventListener(Event.ENTER_FRAME, onEnter);
}//ctor
public function onMdown(e:MouseEvent):void { mbutton = 1; }
public function onMup(e:MouseEvent):void { mbutton = 0; }
public var mbutton:int = 0;
public function isWall(ax:Number,ay:Number):Boolean
{ return (ax<0||ay<0||ax>465||ay>465); }
public var cx:Number = 230;
public var cy:Number = 230;
public var vx:Number = 0;
public var vy:Number = 0;
public var gmode:int = 0;
public var gx:Number = 0;
public var gy:Number = 0;
public var gx2:Number = 0;
public var gy2:Number = 0;
public var gwait:int = 0;
public function onEnter(e:Event):void
{
graphics.clear();
graphics.lineStyle(2, 0);
var r:Number;r=16;
vy+=0.4;
vx*=0.99;
if (vx>0&&isWall(cx+r,cy)) {vx*=-0.5;}
else if (vx<0&&isWall(cx-r,cy)) {vx*=-0.5;}
if (vy>0&&isWall(cx,cy+r)) {vy*=-0.5;}
else if (vy<0&&isWall(cx,cy-r)) {vy*=-0.5;}
cx+=vx;cy+=vy;
var mx:Number; var my:Number;
var ax:Number; var ay:Number;
var kx:Number; var ky:Number;
var ta:Number;
mx = stage.mouseX; my = stage.mouseY;
if (gmode == 0)
{
ta = Math.atan2(my-cy,mx-cx);
kx = Math.cos(ta)*8;
ky =Math.sin(ta)*8;
var i:int;
ax= cx;ay=cy;
for (i=0;i<88;i+=1)
{
// graphics.drawCircle(ax,ay,2);
if (isWall(ax,ay)){break;}
ax+=kx;
ay+=ky;
}//nexti
}//endif
if (i<88)
{graphics.drawCircle(ax,ay,8);}
if (gwait<=0&&gmode == 0 && mbutton > 0 && i<88)
{
//gmode = 1;
gx2=gx;gy2=gy;
gx= ax;gy=ay;
gwait=20;
}//endif
if (gwait > 0) {gwait-=1;}
//if (gmode == 1)
{
// if (mbutton == 0) {gmode=0;}
graphics.drawCircle(gx,gy,8);
graphics.moveTo(gx,gy);
graphics.lineTo(cx,cy);
graphics.drawCircle(gx2,gy2,8);
graphics.moveTo(gx2,gy2);
graphics.lineTo(cx,cy);
var d:Number; var rest:Number;
rest=64;
d = getMag(gx-cx,gy-cy);
if (cy>gy && d >rest)
{
vx += (gx - cx) * 0.04;
vy += (gy - cy) * 0.04;
}
var nx:Number; var ny:Number;
var dt:Number;
ta = Math.atan2(cy - gy, cx - gx);
nx = Math.cos(ta); ny = Math.sin(ta);
dt = vx * nx +vy * ny;
if (cy > gy&& d > rest)
{
vx -= nx * dt*0.35;
vy -= ny * dt*0.35;
}
if (cy>gy2 && d >rest)
{
vx += (gx2 - cx) * 0.04;
vy += (gy2 - cy) * 0.04;
}
ta = Math.atan2(cy - gy2, cx - gx2);
nx = Math.cos(ta); ny = Math.sin(ta);
dt = vx * nx +vy * ny;
if (cy > gy2&& d > rest)
{
vx -= nx * dt*0.35;
vy -= ny * dt*0.35;
}
vx *= 0.99;
vy *= 0.99;
}//endif
graphics.drawCircle(cx,cy,r);
}//onenter
public function getMag(ax:Number,ay:Number):Number
{ return Math.sqrt(ax*ax+ay*ay); }
}//classend
}