0

AS3 を使用して、画面内の特定のポイントから別のポイントに特定の速度で移動するオブジェクトをプログラムします。さまざまなコードを試しましたが、探しているものを実際に達成できません...今、次のコードで作業しています:

var xVelocity:Number = 8;

addEventListener (Event.ENTER_FRAME, onVelocity);

function onVelocity (eventObject:Event):void
{
    animal0.x +=  xVelocity;
    animal0.y +=  yVelocity;
}

オブジェクトは完全に動きますが、目的の位置 x で停止させることはできません...画面の端に到達するまで動き続けます...どうすれば目的の位置で停止させることができますか? または、それを行うためのより良い方法があれば....

ありがとう

4

3 に答える 3

0

動物が画面を左から右に移動していると仮定すると、次のコードは、動物がxDestに到達すると移動を停止します。

var xVelocity:Number = 8;
var xDest = 300;//Destination point along X axis

addEventListener (Event.ENTER_FRAME, onVelocity);

function onVelocity (eventObject:Event):void
{
    if(animal0.x < xDest)
    {
        //only move animal0 so long as it has not reached the destination
        animal0.x +=  xVelocity;
        animal0.y +=  yVelocity;
    }
}
于 2012-06-27T18:56:29.330 に答える
0

トゥイーン エンジンを試すことができます。greensock パッケージが最適なオプションだと思います。 http://www.greensock.com/tweenmax/

于 2012-06-27T19:48:10.640 に答える
0

距離の式を使用して、オブジェクトが目的地からどれだけ離れているかを計算し、十分に近い場合は、正確な座標にロックします。

var dist:Number; // The distance between the object and its destination
var threshold:int = 3; //How close it has to be to snap into place
function onVelocity (eventObject:Event):void
{
    animal0.x +=  xVelocity;
    animal0.y +=  yVelocity;
    dist = Math.sqrt(Math.pow(xDest - animal0.x,2) + Math.pow(yDest - animal0.y,2));
    if(dist < threshold)
    {
        removeEventListener(Event.ENTER_FRAME, onVelocity);
        animal0.x=xDest; // Locks the object into the exact coordinates
        animal0.y=yDest;
    }

}

私が作成しているゲームでまったく同じ問題が発生しましたが、これが解決方法です。

于 2012-06-27T19:48:15.893 に答える