0

タイムラインに一連のセクションがあり、gotoandplay を使用したいと考えています。タイムラインの別のセクションの再生を開始するにはどうすればよいですか? gotoandplay の終了を検出する方法はありますか?

例: 3 つのオブジェクトと 6 つのフレーム。

各オブジェクトには、アニメーション イン フレームと反対側のアニメーション アウト フレームがあります。

各フレームで、ユーザーは 3 つのオブジェクトのいずれかを選択できますが、オブジェクトが既にアニメーション化されている場合は、最初に 2 番目のアニメーション化アウト フレームを再生する必要があります。

選択したオブジェクトの最初のフレームを開始するには、アニメーション出力シーケンスの終了を検出する必要があります。

それが理にかなっており、どんな助けでも大歓迎です。

ありがとう

4

1 に答える 1

0

あなたの質問はいくつかのサークルに入っていますが、私はあなたが望むものを手に入れたと思います.

これにはframelabelsを使用し、enterframeを使用して現在のフレームの現在のframelabelが何であるかを確認できます。または、知りたいフレームにフレームスクリプトを追加することもできます。

EnterFrame:

タイムラインで知っているフレームにラベルを追加します。おそらく、フレームラベルに「roll_start」、「roll_end」などの名前を付けます。

次に、enterframe を使用して、関心のあるフレームにいるかどうかを次のようにテストします。

addEventListener(Event.ENTER_FRAME, enterFrameHandler);
private function enterFrameHandler(e:Event):void {
    if (currentLabel == 'roll_start') {
        // Rollover started
    } else if (currentLabel == 'roll_end') {
        // Rollover ended
    }
}

フレームスクリプト:

文書化されていない frameScript メソッドを使用して、目的のフレームでカスタム バブル イベントをディスパッチするスクリプトを追加します。次に、enterframe をリッスンしてすべてのフレームをチェックするのではなく、そのイベントをリッスンします。

private static const TIMELINE_AT_LABEL:String = 'timelineAtLabel';
function frameScript():void {
    dispatchEvent(new Event(TIMELINE_AT_LABEL, true, true));
}

var rollStartFrame:int = 10;
var rollEndFrame:int = 20;
addFrameScript(rollStartFrame, frameScript);
addFrameScript(rollEndFrame, frameScript);

addEventListener(TIMELINE_AT_LABEL, atLabelHandler);
private function atLabelHandler(e:Event):void {
    var frame:int = e.target.currentFrame;
    if (frame == rollStartFrame) {
        // Rollover started
    } else if (frame == rollEndFrame) {
        // Rollover ended
    }
}
于 2010-08-19T22:17:13.730 に答える