Spritebuilder如何以编程方式更改CCNode的动画(CCB文件)?

时间:2014-12-29 08:13:01

标签: ios animation cocos2d-iphone spritebuilder

我试图制作一个Spritebuilder iPhone游戏,我的主角_player是一个CCNode,其子节点是CCBFile,用于保存角色的空闲动画。

我想将此播放器的CCBFile更改为另一个名为ForwardDash.ccbi的CCBFile,其中包含'攻击'播放器触摸屏幕时的动画。

这就是我正在尝试的:

 //_player is a CCNode, its first child is the CCBFile with the idle animation.
 //animar is a pointer to the CCBFile with the ForwardDash animation

 CCSprite *wat = _player.children[0];
           CCNode *animar = [CCBReader load:@"ForwardDash"];
           [wat setSpriteFrame: (CCSpriteFrame*)animar];

它失败并给我错误:'线程1:信号SIGABRT'

1 个答案:

答案 0 :(得分:1)

setSpriteFrame不是您正在寻找的方法。如果你想保持当前的CCB设置,你应该能够完成你想做的事情:

CCSprite *wat = _player.children[0];
[wat removeFromParent];
CCNode *animar = [CCBReader load:@"ForwardDash"];
[_player addChild:animar];

虽然这有效,但我建议您尝试利用SpriteBuilder中的不同动画时间轴。您可以向CCB文件添加新的时间轴,然后以编程方式更改动画,而无需删除和添加新节点。您可以阅读更多有关使用时间轴here的信息。设置完成后,您将能够以:

开始新动画
CCSprite *wat = _player.children[0];
CCAnimationManager* animationManager = wat.animationManager;
[animationManager runAnimationsForSequenceNamed:@"ForwardDash"];