Как получить доступ к собственности из CCLayer?

Я добавляю слой к своей сцене и хочу проверить, когда он полностью загружен, установив логическое значение после того, как моя инициализация называется doneInitializing в YES, Но мне нужно как-то получить к нему доступ... Как мне это сделать?

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;

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

1 ответ

Решение

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

@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, Вы должны сказать среде выполнения "чувак, hWL - это HelloWorldLayer", объявив hWL как HelloWorldLayer или приведение к этому классу.

Другие вопросы по тегам