在我的我已经定义了一个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