2012-02-17 15 views
1

状況は次のとおりです。私は自分のゲームのメインシーンとしてGameSceneクラスを持っています。私の実装では、+(id)sceneがあり、appdelegaterunWithSceneを使ってゲームを実行し、そのメソッドを呼び出します。GameSceneのシーン(Cocos2d)にHUDを追加

同様に、私はControlLayerクラスを作成しました。私はそれをCCLayerサブクラスとして書いており、私の計画はControlLayerをメインのGameSceneに追加することでした。それを開始するには+(id)controlがあります。

今、私はこれをどのようにまとめるべきか正確には分かりません。私はControlLayerオブジェクトを+(id)sceneに作成し、を使用してControlLayerを作成しようとしました。ジョイスティックは私が触れると動きます。私が走っているように見える問題は、プレイヤーを動かすことです。

はすべてのフレームでcheckJoystick:メソッドを呼び出す予定です。しかし、私はControlLayerオブジェクトを+(id)sceneに宣言しているので、明らかにcheckJoystickは私のControlLayerオブジェクトにアクセスできません。私もControlLayerオブジェクトを私のヘッダーに追加しましたが、明らかに+(id)sceneにはアクセスできません。 +(id)scene-(id)sceneに変更しようとしましたが、これはスコープの問題を修正しますが、エラーが発生します。

基本的には私の質問は次のようなものです:ControlLayerオブジェクトをGameSceneに宣言すると、クラス全体で使用できるようになりますか?おそらくこれはinitにあるでしょうか?

答えて

2

これを試してください。 GameSceneクラスで、ControllerLayerクラスの.hファイルにメンバー変数を追加します。あなたのGameScene +シーン方法で次にGameScene.h

@property (nonatomic, retain) ControllerLayer* myControllerLayer; // don't forget to synthesize in Gamescene implementation 

CCScene* scene = [CCScene node]; 

GameScene* gameSceneLayer = [GameScene node]; 
[scene addChild:gameSceneLayer]; 

ControllerLayer* controllerLayer = [ControllerLayer node]; 
[scene addChild:controllerLayer]; 

gameSceneLayer.myControllerLayer = controllerLayer; 

ような何かを今すぐあなたのGameSceneがmyControllerLayer財産

NOTE経由ControllerLayerへのアクセス権を持っています:あなたの問題を解決するには、[scene addChild:z:tag:]を使用してからgetChildByTagなどを使用する方法がいくつかあります。

+0

ありがとう、私のために働いた! – nick

関連する問題