flash on 2016-9-1
♥0 |
Line 87 |
Modified 2016-09-01 04:21:18 |
MIT License
archived:2017-03-20 16:22:59
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/OSWH
*/
package {
import flash.events.Event;
import flash.display.Sprite;
public class FlashTest extends Sprite {
public function FlashTest() {
wx0 = 50; wy0=250;
wx1 = 320; wy1=320;
wy0=Math.random()*90+250;
wy1=Math.random()*130+280;
stage.addEventListener(Event.ENTER_FRAME, onEnter);
}//ctor
public var wx0:Number = 0;
public var wy0:Number = 0;
public var wx1:Number = 0;
public var wy1:Number = 0;
public var cx:Number =230;
public var cy:Number =230;
public var vx:Number =0;
public var vy:Number =0;
public var ang:Number =0;
public var vang:Number=0;
public function getMag(ax:Number,ay:Number):Number
{ return Math.sqrt(ax*ax+ay*ay); }
public function onEnter(e:Event):void
{
graphics.clear();
graphics.lineStyle(2, 0);
vx*=0.99;vy*=0.99;
vy+=0.2;
if (cy>430) { cx=230;cy=230;vx=0;vy=0;
wy0=Math.random()*90+250;
wy1=Math.random()*130+280;
}
//if (vy>0&&cy>=435){vy*=-0.5; }
var r:Number;
var wr:Number;
r=16;
wr=16;
r=8;wr=32;
r=32;wr=2;
var px:Number; var py:Number;
px =cx; py=cy;
graphics.drawCircle(px,py,r);
graphics.moveTo(px,py);
graphics.lineTo(px+Math.cos(ang)*r,py+Math.sin(ang)*r);
graphics.drawCircle(wx0,wy0,4);
graphics.drawCircle(wx1,wy1,4);
graphics.moveTo(wx0,wy0);
graphics.lineTo(wx1,wy1);
var t:Number;
t = getClose(px,py,wx0,wy0,wx1,wy1);
graphics.drawCircle(closex,closey,wr);
var dx:Number; var dy:Number;
var mag:Number;
dx= (px)-closex;dy=(py)-closey;
mag = getMag(dx,dy);
if (mag==0){mag=0.001;}
dx/=mag;dy/=mag;
if (mag<(r+wr))
{
var dot:Number;
dot = vx*dx+vy*dy;
if (dot<0)
{
vx+= -dx*dot;
vy+= -dy*dot;
ang += ((vy*dx)+(dy*vx)) / -r;
}
}//endif
cx+=vx; cy+=vy;
}//onenter
public var closex:Number =0;
public var closey:Number =0;
public function getClose(px:Number,py:Number, x0:Number,y0:Number,x1:Number,y1:Number):Number
{
var t:Number;
var ax:Number; var ay:Number;
var bx:Number; var by:Number;
ax = px-x0; ay=py-y0;
bx=x1-x0; by=y1-y0;
t = (ax*bx+ay*by)/(bx*bx+by*by);
if(t<0){t=0;} if(t>1){t=1;}
closex=x0+bx*t;
closey=y0+by*t;
return t;
}//getclose
}//classend
}