2012-05-31 4 views
0

내 장면에 레이어를 추가하고 있는데, 초기화 후 부울을 설정하여 완전히로드 된 시점을 doneInitializing ~ YES으로 확인하고 싶습니다. 하지만 어떻게 든 그것을 접근해야합니다 ... 나는 그것을 어떻게합니까?CCLayer에서 속성에 액세스하는 방법?

LoadingScreen.h

@interface LoadingScreen : CCLayerColor{ 
    CCLayer *hWL; 
} 

LoadingScreen.m

hWL = [HelloWorldLayer node]; 

[self addChild:hWL]; 

if(hWL.doneInitializing == YES){ // that is where I get stuck 
//do something 

} 

내가 변수 doneInitializing에 액세스 할 수 있습니다 ... 왜?

HelloWorldLayer.h

@interface HelloWorldLayer : CCLayer 
{ 
    BOOL doneInitializing; 
} 



@property (nonatomic,readwrite) BOOL doneInitializing; 

HelloWorldLayer.m는

@synthesize doneInitializing; 

이를 달성하기 위해 더 나은 방법이 있나요? 이에

@interface LoadingScreen : CCLayerColor{ 
    CCLayer *hWL; 
} 

:

답변

2

바로이 부분 변경

@interface LoadingScreen : CCLayerColor{ 
    HelloWorldLayer *hWL; 
} 

또는 사용이 줄을 대신 :

if(((HelloWorldLayer *)hWL).doneInitializing == YES){ 

컴파일러와 런타임을 사용하면지고있다 알 필요가있다 속성이 CCLayer 대신 HelloWorldLayer입니다. hWL = [HelloWorldLayer node]을 할당하더라도 hWL은 일반 CCLayer으로 선언되었고 hWL.doneInitializing은 런타임에서 알고있는 한 CCLayer에는 doneInitializing이라는 속성이 없으므로 문제가 발생합니다. hWLHelloWorldLayer으로 선언하거나 해당 클래스에 캐스팅하면 런타임에 "친구, hWL이 HelloWorldLayer"라고 알릴 필요가 있습니다.

+0

Perfect. 고마워요 .--) 나는 그것에 대해 생각할 수 없었지만, 분명하고 분명한 감사입니다. –

관련 문제