转载请注明出处:csdn火木达人
CocosBuilder创建动画的解析类CCBAnimationManager。
描述:当你使用CocosBuilder创建2个或2个以上的动画,在运行程序的时候默认的执行一个动画,如果你在这个动画执行完的回调方法中
completedAnimationSequenceNamed在执行另外的一个动画,在另一个动画执行完的时候就会报错。
原因:在执行第一个动画完的时候的回调方法是
void CCBAnimationManager::sequenceCompleted()
{
if (mDelegate)
{
mDelegate->completedAnimationSequenceNamed(mRunningSequence->getName());
}
int nextSeqId = mRunningSequence->getChainedSequenceId();
mRunningSequence = NULL;
if (nextSeqId != -1)
{
runAnimations(nextSeqId, 0);
}
}
你相当于这个方法的 mDelegate ->completedAnimationSequenceNamed (mRunningSequence ->getName ()); 处执行你的第二个动画,接着后面就会把当前的mRunningSequence置空,在执行完第二个动画之后又会回到sequenceCompleted函数,这时mDelegate ->completedAnimationSequenceNamed (mRunningSequence ->getName ());这个方法还会执行,但是mRunningSequence已经是NULL了,这个时候就会崩溃。
暂时的解决办法:可以给一个CCNode执行一个CCSequence的动作,CCSequence的第一个动作是CCDelayTime,第二个是一个CCCallFunc,在CCCallFunc中播放第二个动画。
本文解析了CocosBuilder中CCBAnimationManager类在处理多个动画时出现的问题及原因,并提供了一个临时解决方案,通过使用CCSequence结合CCDelayTime和CCCallFunc来避免程序崩溃。
2190

被折叠的 条评论
为什么被折叠?



