TweenLite圆周运动

时间:2012-04-13 14:22:28

标签: actionscript motion tweenlite

如何使用TweenLite [actionscript 3库]使对象从(startX,startY)到(destinationX,destinationY)以圆周运动移动并出现一些像差?

1 个答案:

答案 0 :(得分:1)

您应该能够使用CirclePath2D插件设置圆周运动,并且可能会使用onUpdate函数稍微偏移该位置。 听起来令人困惑的是

  

从(startX,startY)到(destinationX,destinationY)

因为如果你以圆周运动移动,在某个时刻你会从你开始的地方结束。 如果你从一个位置开始并在另一个位置结束,你可能会在曲线上移动,在这种情况下你想看看BezierThroughPlugin

尽管如此,使用onEnterFrame循环在圆形路径上制作动画非常简单,您可以轻松地将圆圈更改为椭圆形,或者稍微随机偏移路径。通常你需要从极坐标转换为笛卡尔坐标:

 x = cos(angle) * radius
 y = sin(angle) * radius

但是Point的polar()方法已经为你做了这个:

var speed:Number = 0;//how fast to move around the circle
var spread:Number = 20;//how far away from the centre

var b:Sprite = addChild(new Sprite()) as Sprite;
b.graphics.beginFill(0);
b.graphics.drawCircle(-3,-3,3);
b.graphics.endFill();
graphics.lineStyle(1,0xDEDEDE);



this.addEventListener(Event.ENTER_FRAME,update);
function update(event:Event):void{
    speed += .1;//update the 'angle' , .1 is the increment/speed at which b spins
    var distance:Number = spread + (Math.random() * 10 - 5);//spread + random 'aberration'
    var offset:Point = Point.polar(distance,speed);//convert from angle/radius to x,y

    b.x = mouseX + offset.x;
    b.y = mouseX + offset.y;

    graphics.lineTo(b.x,b.y);
}