我试图制作一个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'
答案 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"];