私はiPhoneゲームを作っています。私は素敵なアーキテクチャを実装しようとしましたが、私はそれが私に逆らっていると思います。私は私のPlaySceneのための2つの層を持っています。 HUDLayerとPlayLayer。これら2つは、SceneManagerクラスのレイヤーとしてインスタンス化され、両方がPlaySceneに追加されたクラスです。PlayLayerのHUDLayerからupdateStringメソッドを呼び出すにはどうすればよいですか?
質問がありますが、PlayLayerクラスからHUDクラスにアクセスするにはどうすればよいですか? PlayLayerからアクセスする必要があります。それは、すべての動き/イベントコードがどこにあるかです。
シーンを作成するSceneManagerクラスのメソッドです。
+(void) goPlay
{
CCLayer *hudLayer = [HUD node];
CCLayer *playLayer = [PlayLayer node];
hudTag = playLayer.tag;
[SceneManager goWithHud: playLayer: hudLayer: hudTag];
}
+ (CCScene *) goWithHud:(CCLayer *) playLayer:(CCLayer *) hudLayer:(int)hudTag {
CCDirector *director = [CCDirector sharedDirector];
CCScene *newScene = [CCScene node];
[newScene addChild: playLayer];
[newScene addChild: hudLayer z:0 tag:hudTag];
if([director runningScene])
[director replaceScene:newScene];
else
[director runWithScene:newScene];
return newScene;
}
は、だから私はHUDLayerとPlayLayerクラスとして動作するHUDクラスを持っているもので、すべての動き/イベントコードなど。私はラベルの1つ上の文字列を設定するにはどうすればよい
HUD、そしてどこからそれをやるべきですか?私は多くのアプローチを試みましたが、Obj-Cの理解が不足していると思います。
さらにコードが必要な場合は教えてください。私はそれが必要でなければ、そこにそれの負荷をスパムしたくありません。
ありがとうございました。あなたは両方の層を持っているSceneManager
を持っていたよう
これは意味があります。しかし、私はそのようなオブジェクトを作成する構文が不明です、私はどのように私のHUDLayerを参照するのですか?それをインスタンス化すると、HUDオブジェクトになりますが、CCLayerとしてインスタンス化する必要があるため、SceneManagerで 'CCLayer'がupdateStringに応答しない可能性があります。 – cardycakes
クラスの初期化時にCCLayerになるので、HUDのメソッドにアクセスできないため、このメソッドをSceneManagerから呼び出すことはできないようです。 – cardycakes
また、返信いただきありがとうございます! – cardycakes