0

1 つのアーキテクチャ上の問題を解決しようとしていますが、最適なアプローチを見つけたいと考えています。

この場合の私のビューであるゲーム シーン GameLayer.h があります。コントローラーにしようとしている GameEngine クラスもあります。CCNode から派生したカスタム Egg クラスと、Egg クラスのスケジュールを介して実装されたいくつかのタイマー ロジックがあります。addChild メソッドを使用してゲーム シーンに多数の Egg オブジェクトを追加しました。したがって、GameEngine.m は GameLayer.h をインポートし、GameLayer.m は Egg.h をインポートします。

各エッグのタイマーが切れた後、通知を受け取りたいです。つまり、いくつかのアクションを実行したり、スコアを増やしたりします。質問は、そのような状況を実装するための最良の方法は何ですか. また、MVCルールに従いたい私の頭に浮かぶクイックソリューションは

  1. Egg クラスに Gamelayer.h をインクルードし、その中で更新メソッドを呼び出します。ビュー (自己) を更新し、GameEngine に通知して新しいスコアを保存します。
  2. Egg クラスに Gamelayer.h をインクルードし、その中で更新メソッドを呼び出します。update メソッドで、GameEngine.h にある別の update メソッドを呼び出し、GameEngine の保存スコアから取得し、Gamelayer (ビュー) を更新します。
  3. KVO を実装します。問題は、私が以前にそれをやったことがないことです。オブザーバーが GameLayer または GameEngine であるべきかわかりません

助けてください、どんな例でも大歓迎です

4

1 に答える 1