-1

私は小さなフラッシュ ゲームを作ったし、今は物事を切り替えています。

最初のフレームには、デフォルトのムービークリップとボタンが配置されています。ボタンをクリックすると、機能しているゲームのすべての部分を含むリンクされたムービークリップが追加され、それ自体が削除されます。これでスタート画面が消えました。

その部分は機能し、ゲームは以前と同じように機能します.

今、文字通り少なくとも 50 の異なることを試してみましたが、自分のやりたいことができません。

あなたがゲームに負けたとき、機能的なゲームを含むムービークリップを削除し、新しい子である勝敗のムービークリップを追加したいと考えています。

[ほとんどの場合、containAll の「ルート」ムービークリップを使用してプレフィックスを付けています。]

少なくとも、ゲームのムービークリップが削除されたように見え、勝敗が前面に表示されますが、ゲームのムービークリップはまだ「アクティブ」であり、リスナーはまだ gameLoop を実行しています。

私に何ができるか知っている人はいますか?または、実際には、これよりも優れたデザインです。コードが必要な場合は貼り付けることができますが、今のところ、すべてを完全に試すのは面倒です。

ありがとう。

4

1 に答える 1

0

少なくとも、ゲームムービークリップが削除されているように見えます。前面に勝ち/負けの表示がありますが、ゲームムービークリップはまだ「アクティブ」であり、リスナーはまだgameLoopを実行しています。

ステージからオブジェクトまたはオブジェクトを削除するMovieClip(または、オブジェクトをに設定するnull)と、イベントリスナーがクリーンアップされないため、実行が継続され、オブジェクトがガベージコレクションされなくなり、ゲームにメモリが含まれる可能性があります。リーク

オブジェクト(ゲーム)をステージから削除するときに、MovieClip次の場所で「cleanUp」関数を呼び出す必要があります。

  • すべてのイベントリスナーを削除します

    //for example, let's say that earilier in your code 
    //you add an enter frame listener:
    this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
    
    //on your clean up function you should do:
    this.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
    

子のイベントリスナーもすべて削除してください。

  • すべてのタイマーを停止します(そしてリスナーを削除します)

これは、AS3のクリーンアップについてさらに参照するための優れた質問/回答です。AS3の参照クリーンアップを正しく実行していますか?

于 2013-02-27T08:47:09.503 に答える