flash on 2016-2-23
♥0 |
Line 75 |
Modified 2016-02-23 23:23:33 |
MIT License
archived:2017-03-30 11:39:57
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/Eu7a
*/
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(Event.ENTER_FRAME, onEnter);
}//ctor
public function onMdown(e:MouseEvent):void
{
var ta:Number;
ta = Math.atan2(cy-stage.mouseY, cx-stage.mouseX);
addImp(stage.mouseX, stage.mouseY, 0, -4);
}//onclick
public var cx:Number = 230;
public var cy:Number = 230;
public var ang:Number = 0;
public var vx:Number = 0;
public var vy:Number = 0;
public var vang:Number = 0;
public function onEnter(e:Event):void
{
graphics.clear();
graphics.lineStyle(2, 0);
graphics.drawCircle(cx,cy, 8);
graphics.drawRect(0,350,465,16);
checkImp(64, 32);
checkImp(-64, 32);
checkImp(32, -32);
checkImp(-32, -32);
vy+=0.2;
vx*=0.99; vy*=0.99; vang*=0.99;
cx+=vx; cy+=vy;
ang+=vang;
if (stage.mouseX > cx +30) { vx+=0.2;}
else if (stage.mouseX < cx - 30) { vx-=0.2;}
/*
graphics.moveTo(cx,cy);
graphics.lineTo(cx+Math.cos(ang)*32,cy+Math.sin(ang)*32);
graphics.moveTo(cx,cy);
graphics.lineTo(cx+Math.cos(ang)*-32,cy+Math.sin(ang)*-32);
*/
}//onenter
public function checkImp(ax:Number, ay:Number):void
{
var ux:Number; var uy:Number;
var vx:Number; var vy:Number;
var nx:Number; var ny:Number;
nx = Math.cos(ang); ny = Math.sin(ang);
ux = nx*ax; uy = ny*ax;
vx = -ny*ay; vy = nx*ay;
ax = cx+ux+vx; ay=cy+uy+vy;
graphics.moveTo(cx,cy);
graphics.lineTo(ax, ay);
if (ay > 350)
{
addImp(ax,ay,0, (350-ay)*0.5);
addImp2(ax,ay,0, 350-ay);
}//endif
if (ax > 465)
{ addImp(ax,ay, -1, 0); }
if (ax < 0)
{ addImp(ax,ay, 1, 0); }
}//checkimp
public function addImp(ax:Number, ay:Number,ix:Number,iy:Number):void
{
var ta:Number;
vx += ix; vy += iy;
ta = ((ax - cx) * iy) - ((ay - cy) * ix);
vang += ta * 0.0001;
}//addimp
public function addImp2(ax:Number, ay:Number,ix:Number,iy:Number):void
{
var ta:Number;
cx += ix; cy += iy;
ta = ((ax - cx) * iy) - ((ay - cy) * ix);
ang += ta * 0.0001;
}//addimp
}//classend
}