我需要在屏幕上随机移动许多物体。对象开始路径并且朝向路径也应该随机。我在google上搜索过,最后我发现了一个有用的教程来绘制曲线。但我不知道如何使用该曲线路径移动对象。但我相信在as3中会有一些必须使用sin和cos theta的公式。所以如果有人能解决我的问题,请告诉我。而且,如果我有任何样本项目也对我非常有用。 我绘制曲线的链接如下。 http://active.tutsplus.com/tutorials/actionscript/the-math-and-actionscript-of-curves-drawing-quadratic-and-cubic-curves/?search_index=4
Thanks in advance.Immediate Help would be appreciated.
答案 0 :(得分:4)
如你所提到的那样,一个quick'n'dirty会使用极坐标到笛卡尔坐标(sin和cos):
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's BezierPlugin或BezierThroughPlugin。应该很容易随机化起点/终点。
另外,您可以查看此older answer on quadratic,cubic and hermite interpolation
的第一部分在我的示例中,我正在绘制路径,但当然,您可以使用这些计算出的x,y坐标插入DisplayObject以在屏幕上移动它。