访问CCB根节点动画时间轴 - Cocos2D

时间:2014-06-18 10:28:18

标签: ios cocos2d-iphone spritebuilder

这让我疯了。我正在尝试访问CCB根节点,因此我可以使用SpriteBuilder/Cocos2d获取动画时间轴。

我有heroCharacter.m这是我的动画CCNode的自定义类。

我将其导入bedroomScene.m。使用

CCNode *_heroContainer;

在我的视图中加载了

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

当我运行animationManager时,它是一个空值。

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

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

首先,当您将CCB添加为其他节点的子级时,您应该使用load:而不是loadAsScene:

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

使用上面的代码hero将是heros/panda CCB文件的根节点。

使用loadAsScene代码时,根节点包含在CCScene对象中,因此hero指向CCScene实例,而不是CCB的根节点。 CCScene的children数组只包含一个子节点,它将是实际的CCB根节点。

接下来,您将加载的CCB添加为_heroContainer的子级。但是,给定CCB的动画管理器始终位于CCB的根节点上,这意味着(如果您使用load:而不是loadAsScene:)动画管理器位于hero对象中,它可以' t在_heroContainer节点中:

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

请注意,如果升级到cocos2d的v3.1,则只需使用hero.animationManager即可访问CCBAnimationManager。