2012-01-16 3 views
1

Cocos2d-x를 사용하여 C++ 프로젝트를 시작하고 있는데, AppDelegate가 IntroMenu 객체를 생성하는 위치는 중요하지 않습니다.내 AppDelegate를 인스턴스화하는 클래스의 인스턴스 변수로 정의하는 방법은 무엇입니까?

IntroMenu.h

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

내 IntroMenu 정의하는 방법입니다 ... 내 IntroMenu 클래스의 인스턴스 변수로 AppDelegate에 정의하려는하지만 난 그것을 할 관리하지 않는

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이 널 포인터입니다.

인트로 메뉴 및 해당 변수 _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(); 
관련 문제