2012-02-02 51 views
0

在我的我已經定義了一個CCLayer這樣的:定義在.h文件中一個cclayer

@interface MyLayer : CCLayer { 
    CCLayer * referenceLayer; 
} 

我應該如何宣佈它在+(CCScene *)場景中使用它?

是否這樣?

@property (nonatomic, retain) CCLayer *referenceLayer; 
+0

傾向於重寫代碼,以便您可以在 - (id)init方法中執行此操作。 – LearnCocos2D 2012-02-02 18:26:31

+0

@ LearnCocos2D:抱歉,我沒有明白你的意思;我想要實現的是從另一層獲得一些精靈...你知道任何可能性,而不是'CCSprite * sprite =(CCSprite *)[referenceLayer getChildByTag:kTagNumber];'? – 2012-02-02 22:12:18

回答

0

由於+ (id)scene是一個類的方法,你不能從內部訪問它伊娃/屬性。一個可能的解決方案是有一個靜態變量在layer.m文件,像下面的代碼片段:

static CCScene* _scene = nil; 

+ (id)scene { 
    if (_scene == nil) { 
     _scene = [[CCScene node] retain]; 
     //-- further scene initializaion 
    } 
    return _scene; 
} 

這種簡單的方法有一個缺點:你只能有一個周圍這樣的層。

+0

[這個例子](http://stackoverflow.com/questions/9076699/accessing-an-object-from-class-type-method-in-iphone-cocos2d)? – 2012-02-02 18:16:27

+0

它也可以工作,你只需要定義:'+(id)scene:(CCLayer *)l'而不是'+(id)scene'。在這種情況下,您需要事先'alloc-init'圖層,'scene'不能用作工廠方法。 – sergio 2012-02-03 16:54:50

+0

你能更新你的答案嗎?其實我試圖將'bLayer'作爲孩子添加到'referenceLayer';你認爲這是可能的嗎? – 2012-02-03 16:59:27

相關問題