1

私は多くの異なる画面(ログイン、メニュー、ゲームなど)で構成され、各画面に独自の背景画像があるフラッシュゲームを持っています。

たとえば、ログインが成功すると、次のように実行できます。

addChild(new Menu());

これにより、ログイン画面の上にメニューが作成され、ログイン画面は表示されなくなります。同様に、ユーザーがメニューの[再生]をクリックするとaddChild(new Game())、ゲームを開始するために呼び出すことができます。

これは、私が推測しているような表示ツリーを残すでしょう

-Login page
  - Menu
    - Game

表示ツリーから前の画面を削除する必要がありますか?たとえば、ユーザーがメニューの[再生]をクリックした場合です。removeChild(menu)電話をかける前に最初にすべきaddChild(new Game())ですか?

4

2 に答える 2

0

これは明らかに、ゲームのアーキテクチャとリソースの管理方法に依存します。AIR ではなく、質問のフラッシュにタグを付けたので、このゲームは Web ブラウザーを使用して消費するためのものであると想定します。

最初に指摘したいのは、最初にアイテムへの参照を作成することで、アイテムを削除する方がはるかに簡単になるということです。

var menu:Menu = new Menu();
addChild(menu);

// later
removeChild(menu);

必要なのは、オブジェクトを再作成するコストと維持する効率のバランスを取ることです。

多くの計算を行うオブジェクトがある場合、removeChild を実行するだけでは不十分な場合があります。多くの場合、リソースをクリーンアップするためにクラスに destroy() メソッドがあり、オブジェクトを最初から再作成することで、リソースをより効果的に管理するためのガベージ コレクター。

例のメニューのようなオブジェクトが派手なことをしない場合は、それをメモリに保持し、表示リストを削除して再接続するだけで問題ありません。

これがあなたのゲームに役立つことを願っています。

于 2012-10-02T13:12:48.330 に答える
0

はい、そうしないと、貴重なメモリと CPU サイクルが無駄になります。未使用の画面を削除する利点は、すべての画面を表示リストに残す利点よりもはるかに重要です。

于 2012-10-02T13:09:53.293 に答える