0

我需要在屏幕上随机移动曲线路径中的许多对象。对象开始路径和朝向路径也应该随机选择。我在谷歌上搜索过,最后我找到了一个有用的绘制曲线的教程。但我不知道如何使用该曲线路径移动对象。但我确信 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. 
4

1 回答 1

4

正如您所提到的,快速的'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 的 BezierPluginBezierThroughPlugin。应该很容易随机化起点/终点。

您还可以查看关于二次、三次和厄米特插值的旧答案的第一部分

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

于 2013-03-17T12:10:46.950 回答