2012-01-16 116 views
1

我开始一个C++项目(使用Cocos2d-x,但并不重要),我的AppDelegate创建一个IntroMenu对象。我想定义的AppDelegate用作我的IntroMenu类的实例变量,但我不设法做...如何将我的AppDelegate定义为它实例化的类的实例变量?

这里是我的IntroMenu是如何定义的:

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 OM我的AppDelegate,我继续像这样的AppDelegate:

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

_app是一个公共变量IntroMenu(类型的AppDelegate的)。

问题是,当我想稍后在AppDelegate的其他方法中使用它时,_app是空指针。

如何正确实例化IntroMenu及其变量_app

谢谢!

+0

你怎么能在一个指针得到一个指向'IntroMenu'到'CCScene '? 'IntroMenu'是否从'CCScene'继承?虽然我没有Cocos2d的经验,但在我看来,您需要获得'introScene'的_child_指向'IntroMenu'类,因为'CCScene'没有'_app'成员。 – 2012-01-16 14:41:18

+1

应该有一个与UIKit中的功能类似的功能,如[[UIApplication sharedApplication]委托]。作为一名前C++程序员,您的公共成员变量方法让我感觉违反了。 – LearnCocos2D 2012-01-18 19:51:54

回答

1
[[UIApplication sharedApplication] delegate] 

这样你就可以访问你的应用程序委托类:)

2

我认为正确的答案是:

AppDelegate *aD = ((AppDelegate*)CCApplication::sharedApplication()); 
aD->myAppDelegateMethod();