在我的我已經定義了一個CCLayer這樣的:定義在.h文件中一個cclayer
@interface MyLayer : CCLayer {
CCLayer * referenceLayer;
}
我應該如何宣佈它在+(CCScene *)場景中使用它?
是否這樣?
@property (nonatomic, retain) CCLayer *referenceLayer;
在我的我已經定義了一個CCLayer這樣的:定義在.h文件中一個cclayer
@interface MyLayer : CCLayer {
CCLayer * referenceLayer;
}
我應該如何宣佈它在+(CCScene *)場景中使用它?
是否這樣?
@property (nonatomic, retain) CCLayer *referenceLayer;
由於+ (id)scene
是一個類的方法,你不能從內部訪問它伊娃/屬性。一個可能的解決方案是有一個靜態變量在layer.m文件,像下面的代碼片段:
static CCScene* _scene = nil;
+ (id)scene {
if (_scene == nil) {
_scene = [[CCScene node] retain];
//-- further scene initializaion
}
return _scene;
}
這種簡單的方法有一個缺點:你只能有一個周圍這樣的層。
[這個例子](http://stackoverflow.com/questions/9076699/accessing-an-object-from-class-type-method-in-iphone-cocos2d)? – 2012-02-02 18:16:27
它也可以工作,你只需要定義:'+(id)scene:(CCLayer *)l'而不是'+(id)scene'。在這種情況下,您需要事先'alloc-init'圖層,'scene'不能用作工廠方法。 – sergio 2012-02-03 16:54:50
你能更新你的答案嗎?其實我試圖將'bLayer'作爲孩子添加到'referenceLayer';你認爲這是可能的嗎? – 2012-02-03 16:59:27
傾向於重寫代碼,以便您可以在 - (id)init方法中執行此操作。 – LearnCocos2D 2012-02-02 18:26:31
@ LearnCocos2D:抱歉,我沒有明白你的意思;我想要實現的是從另一層獲得一些精靈...你知道任何可能性,而不是'CCSprite * sprite =(CCSprite *)[referenceLayer getChildByTag:kTagNumber];'? – 2012-02-02 22:12:18