2014-06-18 14 views
1

這讓我瘋狂。我試圖訪問CCB根節點,因此我可以使用SpriteBuilder/Cocos2d獲取動畫時間線。我有動畫CCNode的自定義類heroCharacter.m訪問CCB根節點動畫時間軸 - Cocos2D

我將它導入bedroomScene.m。使用

CCNode *_heroContainer; 

在我看來,做負載

//Import Hero Scene 
    CCNode *hero = [CCBReader loadAsScene:@"heros/panda"]; 
    [_heroContainer addChild:hero]; 

當我運行animationManager它是一個空值。

CCBAnimationManager* animationManager = _heroContainer.userObject; 
     NSLog(@"AM: %@", animationManager); 

有什麼建議嗎?

回答

3

首先,當您添加CCB作爲另一個節點的孩子,你應該使用load:loadAsScene:

CCNode *hero = [CCBReader load:@"heros/panda"]; 
[_heroContainer addChild:hero]; 

與上面的代碼hero將是heros/panda CCB文件的根節點。

使用代碼loadAsScene,根節點被包裝在CCScene對象中,因此hero指向CCScene實例,而不是CCB的根節點。 CCScene的子數組只包含一個子節點,它將是實際的CCB根節點。

接下來,您將加載的CCB作爲_heroContainer的子項添加。然而,對於一個給定的建行動畫管理始終是建行的根節點,這意味着(如果你使用load:loadAsScene:)動畫管理是在hero對象,它不能在_heroContainer節點:

CCBAnimationManager* animationManager = hero.userObject; 
NSLog(@"AM: %@", animationManager); 

請注意,如果您升級到cocos2d的v3.1,則只需使用hero.animationManager即可訪問CCBAnimationManager。

+0

令人驚歎。我的愚蠢的錯誤 – memyselfandmyiphone