Objective-C:我的初始值没有设置

时间:2014-09-20 06:17:04

标签: ios objective-c cocos2d-iphone initialization spritebuilder

我一直把头发拉过来,我似乎无法想出这个简单的问题。

我有一个扩展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设置为正确的值,但位置不是。

1 个答案:

答案 0 :(得分:1)

看到您正在使用SpriteBuilder,并假设您从SpriteBuilder(doc root var)对_rockPath等进行了分配,您必须在didLoadFromCCB中初始化默认值(并删除你的init方法):

-(void) didLoadFromCCB 
{
    self.map = 0x11111111;
    _rockPath1.position = ccp(90,90);
}

问题是,init方法运行创建节点的实例,这意味着它将在应用CCBReader的赋值之前运行。