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啦。

  • 相关阅读:
    机房收费系统重构(三)—工厂+反射+DAL
    机房收费系统重构(二)—菜鸟入门
    机房收费系统重构(—)—小试牛刀
    vb.net机房收费登录功能
    设计模式总结之结构型模式
    设计模式总结之创建型模式
    大话设计之桥接模式
    大话设计之单例模式
    大话设计之适配器模式
    大话设计之抽象工厂模式
  • 原文地址:https://www.cnblogs.com/unionfind/p/3370554.html
Copyright © 2011-2022 走看看