这让我快疯了。我试图访问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);有什么建议吗?
发布于 2014-06-18 11:46:32
首先,当您将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的子级。但是,给定CCB的动画管理器总是位于CCB的根节点上,这意味着(如果使用load:而不是loadAsScene:)动画管理器位于hero对象中,它不能位于_heroContainer节点中:
CCBAnimationManager* animationManager = hero.userObject;
NSLog(@"AM: %@", animationManager);注意,如果升级到cocos2d的v3.1,您可以简单地使用hero.animationManager访问CCBAnimationManager。
https://stackoverflow.com/questions/24283218
复制相似问题