2012-01-16 18 views
1

私はCocos2d-xを使ってC++プロジェクトを開始していますが、本当に問題はありません。私のAppDelegateがIntroMenuオブジェクトを作成する場所です。ここでAppDelegateをインスタンス化するクラスのインスタンス変数として私のAppDelegateを定義する方法は?

は私IntroMenuが定義されている方法です...私は私のIntroMenuクラスのインスタンス変数としてAppDelegateを定義したいが、私はそれを行うために管理していない:

IntroMenu.h

class IntroMenu : public cocos2d::CCLayerColor 
{ 
public: 
    AppDelegate* _app; 
    //etc... 
} 

IntroMenu.m

CCScene* IntroMenu::scene() 
{ 
    CCScene *scene = CCScene::node(); 
    IntroMenu *layer = IntroMenu::node(); 
    scene->addChild(layer); 
    return scene; 
} 

私はIntroMenu FRをインスタンス化します私AppDelegateオム、私はAppDelegateで、次のように進む:

introScene = IntroMenu::scene(); 
((IntroMenu*)introScene)->_app = this; 

_appはIntroMenuの(タイプAppDelegateの)パブリック変数です。

後でAppDelegateの他のメソッドで使用する場合、_appはnullポインタです。

IntroMenuとその変数_appを正しくインスタンス化するにはどうすればよいですか?

ありがとうございます!

+0

あなたはポインタからCCScene 'にIntroMenu''へのポインタを取得できますか'? 'IntroMenu'は' CCScene'から継承していますか?私はCocos2dの経験はありませんが、 'IntroMenu'クラスを指す' introScene'の_child_を取得する必要があると思われます。 'CCScene'には' _app'メンバーがありません。 –

+1

[[UIApplication sharedApplication] delegate]のように、UIKitに似た機能が必要です。以前のC++プログラマとして、あなたのパブリックメンバーの変数のアプローチは私に違反を感じさせます。 – LearnCocos2D

答えて

1
[[UIApplication sharedApplication] delegate] 

アプリのデリゲートクラスにアクセスすることができますこの方法では:)

2

私は正しい答えがあると思う:

AppDelegate *aD = ((AppDelegate*)CCApplication::sharedApplication()); 
aD->myAppDelegateMethod(); 
関連する問題