如何使用TweenLite [actionscript 3库]使对象从(startX,startY)到(destinationX,destinationY)以圆周运动移动并出现一些像差?
答案 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);
}