zoukankan      html  css  js  c++  java
  • Cocos2d-x中子ccb动画无法正常播放的问题

    美术做了个ccb中嵌套若干个子ccb的动画,其中子ccb A和B是一开始就播放的,CDE是在播放了一段时间后再通过visible设置显示出来。这个动画在CocosBuilder播放很正常,但是放到cocos2d-x里面就不对,子动画不能正常的动。

    跟踪调试了1天半才搞清楚标,问题在runAnimationsForSequenceIdTweenDuration这个函数里,这个函数有两处stopAllAction:

    1. mRootNode->stopAllActions()这个会在每个子ccb每次自己结束后的回调时进入该函数被调用,效果是会造成子ccb的visible不正常显示出来,压根看不到。具体原理还没研究明白。
    2. node->stopAllActions()这个会由于读主ccb时,子ccb的动画就已经读入并且开始播了,然后主ccb读到最后,会播放自己autoplay的动画从而调用该函数被调用,然后停止子ccb的动作——这个节点因为是根节点,所以只是停掉根的动作,按理说动作都是加在孩子上的。可是事实上根上有一个非常重要的动作,那就是计时动画时间结束后调用回调,从而实现循环播放的功能,这里停掉了就不会循环播放而是只播放一次了。

    不过没明白本,也没想清楚怎么改好,然后同事发现cocos2d里面是对的。对比发现(为啥cocos2d-x里面没有这段代码!!!),问题的根本是主ccb的animationmanager在以上stopallaction的时候停掉了不是自己加上的,子ccb的animationmanager管理的动作,所以没法恢复正常播放。解决方法很简单,给每个animationmanager都打个唯一的id,然后每个action都打上这个id,这样在停的时候,只停自己管的那些,就ok啦。

  • 相关阅读:
    spring整合curator实现分布式锁
    curator操作zookeeper
    zk创建集群
    zookeeper下的基本操作
    java语音转文字
    netty的数据通信之心跳检测
    arm B和BL指令浅析
    NAND FLASH驱动程序
    外设位宽为8、16、32时,CPU与外设之间地址线的连接方法
    内存接口原理图笔记
  • 原文地址:https://www.cnblogs.com/unionfind/p/3370554.html
Copyright © 2011-2022 走看看