flash on 2013-6-7
♥0 |
Line 81 |
Modified 2013-06-07 19:18:30 |
MIT License
archived:2017-03-30 22:52:14
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/i9oJ
*/
package {
import flash.text.TextField;
import flash.events.Event;
import flash.display.Sprite;
public class FlashTest extends Sprite {
public function FlashTest() {
// write as3 code here..
deb = new TextField();
deb.width = 400;
deb.height = 400;
deb.mouseEnabled = false;
addChild(deb);
stage.addEventListener(Event.ENTER_FRAME, onEnter);
}//ctor
public var deb:TextField;
public function onEnter(e:Event):void
{
graphics.clear();
graphics.lineStyle(2, 0);
var ax:Number;
var ay:Number;
var mx:Number;
var my:Number;
ax = 200;
ay = 200;
mx = mouseX;
my = mouseY;
graphics.moveTo(ax, ay);
graphics.lineTo(mx, my);
var u:Number;
var kx:Number;
var ky:Number;
graphics.lineStyle(2, 0, 0.1);
for (u = 0; u < 1.0; u += 0.1)
{
kx = ax + (mx - ax) * u;
ky = ax + (my - ay) * u;
graphics.drawCircle(kx, ky, 8);
}//nextu
var dx:Number;
var dy:Number;
var mag:Number;
var rad:Number;
var t:Number;
rad = 16;
dx = mx-ax;
dy = my-ay;
mag = Math.sqrt(dx*dx+dy*dy);
if (mag < 1) { mag = 1;}
t = rad / mag;
deb.text = "mag: " + mag + " u: " +t;
graphics.lineStyle(2, 0xFF0000, 0.2);
for (u = 0; u < 1.0; u += t)
{
kx = ax + (mx - ax) * u;
ky = ax + (my - ay) * u;
graphics.drawCircle(kx, ky, 8);
}//nextu
var nx:Number;
var ny:Number;
var ang:Number;
ang = 0;
ang = Math.atan2(my-ay, mx-ax) + 2.1; // + 1.57;
nx = mx + Math.cos(ang)*64;
ny = my + Math.sin(ang)*64;
graphics.drawCircle(nx, ny, 8);
graphics.lineStyle(2,0xFF, 1);
t = 0.1;
for (u = 0; u < 1.0; u += t)
{
kx = getBezQuad(u, ax, nx, mx);
ky = getBezQuad(u, ay, ny, my);
graphics.drawCircle(kx, ky, 8);
}//nextu
}//onenter
public function getBezQuad(t:Number, x1:Number, x2:Number, x3:Number):Number
{
var ta:Number = (1 - t);
//(1-t)2 = (1-t)(1-t) // P(t) = (1-t)2 *P0 + 2(1-t)*t*P1 + t2*P2
return ( (ta * ta) * x1 + 2 * (ta) * t * x2 + t * t * x3 );
}//getbezier
}//classend
}