我一直把头发拉过来,我似乎无法想出这个简单的问题。
我有一个扩展CCNode的类,这里是标题:
#import "CCNode.h"
@interface ContentPane : CCNode
@property (nonatomic, strong) CCNode * _rockPath1;
@property (nonatomic, strong) CCNode * _rockPath2;
@property (nonatomic, strong) CCNode *_secondPath1;
@property (nonatomic, strong) CCNode *_secondPath2;
@property (nonatomic) int map;
-(void)generatePane;
@end
我正在尝试初始化此类,以便隐藏_rockPath1,_rockPath2等的可见性。但是,我在init中设置的值没有得到遵守。这是我的初始化,在我的初始化中,我只是想设置._rockPath1的位置,因为我知道代码行有效,因为我在程序的其他地方有它并且它工作正常。
- (id)init {
self = [super init];
self.map = 0x11111111;
CCLOG(@"WHAT");
//_rockPath1.position = ccp(90,90);
self._rockPath1.position = ccp(90,90);
return self;
}
我的类初始化后,_rockPath1没有我为它设置的位置,它仍然具有SpriteBuilder中定义的值。奇怪的是,map设置为正确的值,但位置不是。
答案 0 :(得分:1)
看到您正在使用SpriteBuilder,并假设您从SpriteBuilder(doc root var)对_rockPath
等进行了分配,您必须在didLoadFromCCB
中初始化默认值(并删除你的init方法):
-(void) didLoadFromCCB
{
self.map = 0x11111111;
_rockPath1.position = ccp(90,90);
}
问题是,init方法运行创建节点的实例,这意味着它将在应用CCBReader的赋值之前运行。