-3

ゲームでは、ある種のメニューにアクセスできるのが普通です。

説明付きのもののリスト、アップグレードのメニュー、写真やテキストなどでかなり重いもの.

では、すべてを整理する便利な方法は何ですか?

クラスを試してみたところ、クラス間で変数を共有していないようです。
これらのウィンドウ/メニュー間でデータを共有する方法が必要です。つまり、メニューを閉じるたびに一部が消えて、別のメニューで作業する必要のない MovieClip の位置、アルファ、エフェクト、およびその他の値を Flash に計算させないようにします。

理解を深めるための例として、1 つのゲームで 5 つのゲームを作成し、それらの間で変数を共有する必要がある場合はどうすればよいでしょうか?
たとえば、最初にアルカノイドをプレイし、次にテトリスに切り替えてアルカノイドのスコアを取得できるブロックの数として使用し、次にピンボールに切り替えてテトリスで獲得したラインの数をボールの数として使用し、グラディウスと私の船に切り替えます攻撃力はピンボール スコアを 1000 で割ったものであり、勝利の花火効果が大きい総合スコアのウィンドウが表示されます。

各ゲームを個別に動作させる必要があります。そうしないと、グラフィックスと関数を見つけるためのコードの長さで過負荷になり、非常に遅くなります。

それはどのように達成されますか?

ありがとうモスキート、ちょっとぐちゃぐちゃです^_^'

4

1 に答える 1

2

それはどのように達成されますか?

それを実現するためのアーキテクチャを作成します。あなたの特定の例は、次のようにアプローチできます。

まず、これらのミニゲームまたはコンテンツの個別のバッチが実行される基盤を定義します。この基盤は、ミニゲームの実行、および後続のミニゲームに渡したいミニゲームに関連する状態と情報の追跡を処理します。

次に、これらのミニゲームの 1 つを表す基本クラスを定義します。このクラスは、作成してプラットフォームで実行したい新しいゲームごとに拡張されます。この基本クラスは、プラットフォームへの変更の通知を処理します。

最後に、ミニゲーム内の状態の変化を再現するモデルをいくつか作成します。組み込みEventシステムはこれにアプローチするための良い方法ですが、このインスタンスでは、プラットフォームに直接渡す独自のデータ モデルを簡単に作成できます。


コードサンプル。

プラットフォームの基本は、次のようなものになる可能性があります。

public class Platform
{

    private var _game:MiniGame;
    private var _recentGameStateData:GameStateData;


    public function loadGame(game:MiniGame):void
    {
        if(_game != null) game.unload();

        _game = game;
        _game.start(this, _recentGameStateData);
    }


    public function update():void
    {
        if(_game != null) _game.update();
    }


    internal function manageStateChange(gameStateData:GameStateData):void
    {
        _recentGameStateData = gameStateData;

        // Do stuff with the new game state data, like save the current score
        // to use in your next game.
        //
    }

}

あなたのミニゲーム:

public class MiniGame
{

    private var _platform:Platorm;
    private var _score:int = 0;


    public function start(platform:Platform, previousGameStateData:GameStateData):void
    {
        _platform = platform;

        // Use previous GameStateData here.
        //
    }


    public function update():void{}
    public function unload():void{}


    public function notifyPlatform(gameStateData:GameStateData):void
    {
        _platform.manageStateChange(gameStateData);
    }


    protected function get score():int{ return _score; }

}

プラットフォームが管理するゲーム状態データ:

public class GameStateData
{

    private var _game:MiniGame;
    private var _score:int;


    public function GameStateData(game:MiniGame, score:int)
    {
        _game = game;
        _score = score;
    }


    public function get game():MiniGame{ return _game; }
    public function get score():int{ return _score; }

}

そして、その情報を自分のミニゲームでプラットフォームに送信する例:

public class TetrisGame extends MiniGame
{

    override public function unload():void
    {
        // Let the Platform know about the current score when this game is
        // being unloaded.
        var state:GameStateData = new GameStateData(this, _score);
        notifyPlatform(state);
    }

}
于 2013-02-28T13:15:09.350 に答える