AS3:使用as3编程在曲线路径中移动对象?

时间:2013-03-17 09:19:16

标签: actionscript-3 bezier

我需要在屏幕上随机移动许多物体。对象开始路径并且朝向路径也应该随机。我在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. 

1 个答案:

答案 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 BezierPluginBezierThroughPlugin。应该很容易随机化起点/终点。

另外,您可以查看此older answer on quadratic,cubic and hermite interpolation

的第一部分

在我的示例中,我正在绘制路径,但当然,您可以使用这些计算出的x,y坐标插入DisplayObject以在屏幕上移动它。