cocos2d-x-2.0.4中使用CocosBuilder创建动画注意的问题

来源:互联网 发布:nodejs与mysql数据库 编辑:程序博客网 时间:2024/06/03 16:39

转载请注明出处: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中播放第二个动画。

原创粉丝点击