Как определить мой AppDelegate как переменную экземпляра класса, который он создает? - PullRequest
1 голос
/ 16 января 2012

Я запускаю проект C ++ (использующий Cocos2d-x, но это не имеет большого значения), где мой AppDelegate создает объект IntroMenu.Я хочу определить AppDelegate как переменную экземпляра моего класса IntroMenu, но мне не удается это сделать ...

Вот как определяется мое 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 из моего AppDelegate, я поступаю следующим образом в AppDelegate:

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

_app является публичной переменной (типа AppDelegate) IntroMenu.

Проблема заключается в том, что _app является нулевым указателем, когда я хочу использовать его позже в других методах AppDelegate.

Как правильно создать экземпляр IntroMenu и его переменную _app?

Спасибо !!

Ответы [ 2 ]

2 голосов
/ 14 февраля 2014

Я думаю, правильный ответ:

AppDelegate *aD = ((AppDelegate*)CCApplication::sharedApplication());
aD->myAppDelegateMethod();
1 голос
/ 02 марта 2012
[[UIApplication sharedApplication] delegate]

Таким образом, вы можете получить доступ к вашему классу делегата приложения:)

...