我在我的场景中添加了一个图层,我希望通过在初始化后调用布尔值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;
有没有更好的方法来实现这个目标?
答案 0 :(得分: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
1}}没有名为doneInitializing
的属性。您需要通过将hWL
声明为HelloWorldLayer
或将其强制转换为该类来告诉运行时“dude,hWL是HelloWorldLayer”。