0

doneInitializing我正在向我的场景添加一个图层,我想通过在我的初始化调用后设置一个布尔值来检查它何时完全加载YES。但我需要以某种方式访问​​它......我该怎么做?

加载屏幕.h

@interface LoadingScreen : CCLayerColor{
    CCLayer *hWL;
}

加载屏幕.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;

有没有更好的方法来实现这一目标?

4

1 回答 1

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会遇到麻烦,因为据运行时所知, aCCLayer没有名为 的属性doneInitializing。您需要通过将其声明hWLHelloWorldLayer或将其强制转换为该类来告诉运行时“老兄,hWL 是一个 HelloWorldLayer”。

于 2012-05-31T13:42:16.493 回答