Как получить доступ к собственности из 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
или приведение к этому классу.