2012-05-31 2 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; 

Есть ли лучший подход для достижения этой цели ??

ответ

2

Просто измените эту часть:

@interface LoadingScreen : CCLayerColor{ 
    CCLayer *hWL; 
} 

Для этого:

@interface LoadingScreen : CCLayerColor{ 
    HelloWorldLayer *hWL; 
} 

ИЛИ использовать эту линию вместо:

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

компилятор и среда выполнения необходимо знать, что вы получаете свойство HelloWorldLayer вместо CCLayer. Хотя вы назначаете hWL = [HelloWorldLayer node], hWL был объявлен равным CCLayer, и строка с hWL.doneInitializing попадает в проблему, поскольку, насколько известно во время выполнения, CCLayer не имеет свойства с именем doneInitializing. Вы должны сообщить runtime «чувак, hWL - это HelloWorldLayer», объявив hWL как HelloWorldLayer или добавив его в этот класс.

+0

Perfect. Спасибо :-) Я не мог об этом подумать, но это понятно и понятно, спасибо. –