0

皆さんにとっては簡単ですが、私には新しいものです。私は mcPlayer と呼ばれるアニメーションの歩行キャラクターを持っています。タイムライン内には、さまざまなアニメーション状態「walkingLeft」、「walkingRight」、「Idle」のフレーム ラベルがあります。歩くアニメーションは、彼が 1 つの場所を歩いているところです。ボタンを使用して、actionscript を使用してキャラクターをステージ上のさまざまなターゲットに移動し、対応するアニメーションをその動きに合わせて再生できるようにしたいと考えています。

import com.greensock.*;

btnRight.addEventListener(MouseEvent.CLICK, moveRight);
btnLeft.addEventListener(MouseEvent.CLICK, moveLeft);

function moveRight(Evt:MouseEvent):void{
TweenLite.to(mcPlayer,2,{x:450});
mcPlayer.gotoAndPlay("walkingRight");
}
function moveLeft(Evt:MouseEvent):void{
TweenLite.to(mcPlayer,2,{x:450});
mcPlayer.gotoAndPlay("walkingLeft");
}

私は mcPlayer タイムラインでさまざまなコマンドを試しました。各アニマの冒頭。gotoandplay(); を入れてみました。各アニマの最後にあるので、最初に移動してループします。タイムラインはできるだけ使用したくありません。

方法... 1. トゥイーンが動いている間、アニメーションを継続的に再生します。 2. 目的地に到達したらアニメーションを停止し、mcPLayer がターゲットに到達した後、最後にアニマ「アイドル」を再生します。

4

1 に答える 1

1

アニメーションの最後のフレームをテストしてからループバックするアニメーションをループするには、onUpdate パラメータを使用してトゥイーン内で実行し、onUpdateParams を使用して更新に必要なデータを渡すことができます。アニメーション ラベルやアニメーションの最後のフレームなど。

アイドル アニメーションへの変更など、トゥイーンの完了後に何かを実行する場合は、onComplete パラメーターを使用します。

これはあなたがするかもしれないことの例です:

btnRight.addEventListener(MouseEvent.CLICK, moveRight);
btnLeft.addEventListener(MouseEvent.CLICK, moveLeft);

function moveRight(Evt:MouseEvent):void{

    // lastframe should be replaced with whatever the frame the walk right animation ends on.
    TweenLite.to(mcPlayer, 2, {x:450, onUpdate:updateHandler, onUpdateParams:['walkingRight', lastFrame], onComplete:idleHandler);
    mcPlayer.gotoAndPlay("walkingRight");
}
function moveLeft(Evt:MouseEvent):void{

    // lastframe should be replaced with whatever the frame the walk left animation ends on.
    TweenLite.to(mcPlayer, 2, {x:10, onUpdate:updateHandler, onUpdateParams:['walkingLeft', lastFrame], onComplete:idleHandler);
    mcPlayer.gotoAndPlay("walkingLeft");
}


function updateHandler(loopLabel:String, lastFrame:int):void
{
    if (mcPlayer.currentFrame == lastFrame)
    {
        mcPlayer.gotoAndPlay(loopLabel);
    }

}

function idleHandler():void
{
    mcPlayer.gotoAndPlay("idle");
    // this is also where you'd do anything else you need to do when it stops.

}

コンテンツがどのように設定されているかわかりませんが、mcPlayer のタイムラインにすべてのアニメーションがあり、あなたの発言に基づいて各アニメーションにラベルが付いていると推測していました。

コンテンツの設定方法によっては、別の方法で実装する必要がある場合があります。ただし、概念は同じです。onComplete と onUpdate を使用して、これらの特定のイベントを処理します。

于 2013-04-16T19:02:08.460 に答える