正如您所提到的,快速的'n'dirty 将使用极坐标到笛卡尔坐标(正弦和余弦):
import flash.events.Event;
var a:Number = 0;//angle
var ra:Number = .01;//random angle increment
var rx:Number = 100;//random trajectory width
var ry:Number = 100;//random trajectory height
graphics.lineStyle(1);
addEventListener(Event.ENTER_FRAME,function (event:Event):void{
a += ra;//increment angle
rx += a;//fidle with radii otherwise it's gonna be a circle
ry += a;//feel free to play with these
graphics.lineTo(225 + (Math.cos(a) * rx),//offset(225,200)
200 + (Math.sin(a) * ry));//and use pol to car conversion
if(a > Math.PI) reset();//reset at 180 or any angle you like
});
function reset():void{
trace('reset');//more values to tweak here
a = Math.random();
ra = Math.random() * .0001;
rx = 20 + Math.random() * 200;
ry = 20 + Math.random() * 200;
}
随机数需要调整以获得大部分更圆的椭圆(而不是更平的椭圆),但原理是相同的。
如果您不介意使用库,不妨试试TweenLite 的 BezierPlugin或BezierThroughPlugin。应该很容易随机化起点/终点。
您还可以查看关于二次、三次和厄米特插值的旧答案的第一部分
在我的示例中,我正在绘制一条路径,但当然,您可以使用这些计算得到的 x,y 坐标插入 DisplayObject 以在屏幕上移动它。