flash on 2013-1-11
♥0 |
Line 70 |
Modified 2013-01-17 17:49:58 |
MIT License
archived:2017-03-30 22:54:53
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/gsBN
*/
package {
import flash.text.TextField;
import flash.events.Event;
import flash.display.Sprite;
public class FlashTest extends Sprite {
public var deb:TextField;
public var rect:Sprite;
public var r2:Sprite;
public function FlashTest() {
deb = new TextField();
deb.text = "debug";
addChild(deb);
r2 = new Sprite();
r2.graphics.clear();
r2.graphics.lineStyle(2,0x5F5F5f);
r2.graphics.drawCircle(0,0,4);
r2.graphics.drawRect(-64,-16,128,32);
addChild(r2);
r2.x = 200;
r2.y = 200;
rect = new Sprite();
rect.graphics.clear();
rect.graphics.lineStyle(2,0);
rect.graphics.drawCircle(0,0,4);
rect.graphics.drawRect(-64,-16,128,32);
addChild(rect);
rect.x = 200;
rect.y = 200;
stage.addEventListener(Event.ENTER_FRAME, onEnter);
}//ctor
public function onEnter(e:Event):void
{
graphics.clear();
graphics.lineStyle(2,0);
graphics.drawCircle(mouseX, mouseY, 8);
var ax:Number;
var ay:Number;
var fx:Number;
var fy:Number;
var px:Number;
var py:Number;
var dot:Number;
var mx:Number;
var my:Number;
var mag:Number;
var tx:Number;
var ty:Number;
var av:Number;
//based on
//http://gamedev.stackexchange.com/questions/19634/calculating-the-rotational-force-of-a-2d-sprite
ax = mouseX - rect.x;
ay = mouseY - rect.y;
fx = 0;
fy = -8;
dot = (fx*ax + fy*ay) / (ax*ax+ay*ay);
px = ax * dot;
py = ay * dot;
mx = fx - px;
my = fy - py;
mag = Math.sqrt( ax*ax + ay*ay );
tx = mx;// * mag;
ty = my;// * mag;
/*
tx /= 30;
ty /= 30;
*/
graphics.moveTo(mouseX, mouseY);
graphics.lineTo(mouseX+fx, mouseY+fy);
graphics.moveTo(mouseX, mouseY);
graphics.lineTo(mouseX+tx, mouseY+ty);
av = Math.atan2(ty, tx) * (180.0/3.1415);
//av += 360;
//av *= 0.1;
rect.rotation = av;
deb.text = " " + av;
/*
graphics.moveTo(rect.x, rect.y);
graphics.lineTo(mouseX, mouseY);
var ax:Number;
var ay:Number;
ax = -16;
ay = 0;
graphics.moveTo(mouseX, mouseY);
graphics.lineTo(mouseX+ax, mouseY+ay);
var bx:Number;
var by:Number;
bx = rect.x - mouseX;
by = rect.y - mouseY;
var tx:Number;
var ty:Number;
tx = -by;
ty = bx;
graphics.lineStyle(2,0xFF0000);
graphics.moveTo(mouseX, mouseY);
graphics.lineTo(mouseX+tx, mouseY+ty);
var dot:Number;
var nxa:Number;
var nya:Number;
var nxt:Number;
var nyt:Number;
var mag:Number;
mag = Math.sqrt(ax*ax+ay*ay);
nxa = ax/mag;
nya = ay/mag;
mag = Math.sqrt(tx*tx+ty*ty);
nxt = tx/mag;
nyt = ty/mag;
dot = nxt*nxa + nyt*nya;
deb.text = "dot " + dot;
*/
}//onenter
}//classend
}