如何从CCLayer访问财产?

时间:2012-05-31 12:51:40

标签: objective-c properties cocos2d-iphone cclayer

我在我的场景中添加了一个图层,我希望通过在初始化后调用布尔值doneInitializingYES来检查它是否完全加载。但我需要以某种方式访问​​它...我该怎么做?

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 个答案:

答案 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”。

相关问题