这让我疯了。我正在尝试访问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);
有什么建议吗?
答案 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。