TweenLite [アクションスクリプト 3 ライブラリ] を使用して、オブジェクトを (startX、startY) から (destinationX、destinationY) に円運動で移動させる方法はありますか?
質問する
1526 次
1 に答える
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);
}
于 2012-04-13T23:24:42.737 に答える