それはどのように達成されますか?
それを実現するためのアーキテクチャを作成します。あなたの特定の例は、次のようにアプローチできます。
まず、これらのミニゲームまたはコンテンツの個別のバッチが実行される基盤を定義します。この基盤は、ミニゲームの実行、および後続のミニゲームに渡したいミニゲームに関連する状態と情報の追跡を処理します。
次に、これらのミニゲームの 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);
}
}