2012-05-31 26 views
0

我正在添加一個圖層到我的場景,我想通過在初始化後設置一個布爾值來檢查它何時被完全加載,這個布爾值被稱爲doneInitializingYES。但我需要以某種方式訪問​​它......我該怎麼做?如何從CCLayer訪問屬性?

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; 

是否有更好的方法來實現這一目標?

回答

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沒有名爲doneInitializing的屬性。您需要通過聲明hWLHelloWorldLayer或將其轉換爲該類來告訴運行時「老兄,hWL是HelloWorldLayer」。

+0

完美。謝謝:-)我無法想到這一點,但很明顯,很明顯,謝謝。 –