如何将我的AppDelegate定义为它实例化的类的实例变量?
问题描述:
我开始一个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
?
谢谢!
答
[[UIApplication sharedApplication] delegate]
这样你就可以访问你的应用程序委托类:)
答
我认为正确的答案是:
AppDelegate *aD = ((AppDelegate*)CCApplication::sharedApplication());
aD->myAppDelegateMethod();
你怎么能在一个指针得到一个指向'IntroMenu'到'CCScene '? 'IntroMenu'是否从'CCScene'继承?虽然我没有Cocos2d的经验,但在我看来,您需要获得'introScene'的_child_指向'IntroMenu'类,因为'CCScene'没有'_app'成员。 – 2012-01-16 14:41:18
应该有一个与UIKit中的功能类似的功能,如[[UIApplication sharedApplication]委托]。作为一名前C++程序员,您的公共成员变量方法让我感觉违反了。 – LearnCocos2D 2012-01-18 19:51:54