0

これをうまく説明できればと思います。しかし、私のゲームでは、弾丸のムービークリップに 3 つのキーフレームがあります。1 で通常の状態を表示します。2 で爆破を表示し、3 でステージから削除します。合計 3 フレーム。弾丸がオブジェクトに当たると、2 番目のフレームに移動して再生します。フレーム 3 がヒットしたら、それを削除します。これが私のコードです

private function blowUp():void
        {
            if(dead)
            {
                gotoAndPlay(2);
                if(currentFrame == 3)
                {
                    garbage = true;
                }
            }
        }

私の問題は、フレーム 2 に進むが、フレーム 3 に到達しないことです。そのため、フレーム 3 は弾丸をガベージ コレクションできません。代わりに Play() を使用すると動作しますが、gotoAndPlay は動作しません

フレーム3からキーフレームを削除しようとさえしました(それはまだフレームです)。(それがうまくいくことを願っています)しかし、そうではありません。私の問題はばかげていることを知っているので、誰かが助けてくれれば、それは素晴らしいことです. ありがとう

4

3 に答える 3

2

フレームごとにblowUpを呼び出していないので、常にフレーム2にリセットしていますか?

その場合は、おそらく、ブール ガードを配置してみてください。

    private var doingBlowUp : Boolean = false;

    private function blowUp() : void
    {
        if (dead) {
            if (doingBlowUp)
            {
                if (currentFrame == 3)
                {
                    garbage = true;
                    doingBlowUp = false;
                }

            } else {
                doingBlowUp = true;
                gotoAndPlay(2);
            }
        }

    }
于 2010-01-16T17:52:00.207 に答える
0

gotoAndPlay(x) がフレーム「x」を 2 回再生する Flash Player 9 のバグに注意してください。

于 2010-01-16T18:00:31.580 に答える
0

Enter Frame イベント ハンドラを追加する必要があります。ロジックを実行している currentFrame をトレースして、== 3 であるかどうかを確認してみてください。値は 2 になると思います。もう 1 つのオプションは、フレーム 3 から関数を呼び出して、適切なクリーンアップを行うことです。

于 2010-01-16T17:56:38.850 に答える