0

我一直拉着我的頭髮出來,我似乎無法解決這個簡單的問題了。Objective-C:我的init值沒有設置

我有延伸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中設置的值沒有得到尊重。這裏是我的init,在我的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定義的值。奇怪的是,地圖設置爲正確的值,但位置不是。

+0

我想你不應該用ccnode擴展這個類,如果你在這個ContentPane中創建實例的話。而且在初始化期間,你需要在分配位置之前爲_ rockpath1分配內存。 – bllakjakk 2014-09-20 06:24:21

回答

1

看到你正在使用SpriteBuilder,假設你從SpriteBuilder(DOC根VAR)進行指派到_rockPath等,你所要做的默認值的didLoadFromCCB初始化(和刪除init方法):

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

事情是,init方法運行創建節點的實例,這意味着它將在應用CCBReader的分配之前運行。