使用cocos2dx-lua遇到的一些问题

bugly上查看崩溃日志的问题


因为底层使用C++,上层使用的Lua的缘故,导致在bugly上查看崩溃堆栈是比较困难的。即使是在开发环境下,要想看到Lua的崩溃堆栈都必须要在VS里,把Lua的项目设置为启动项才行。注意这时是无法查看正确的C++堆栈的,反之亦然。至于线上跑的程序,在崩溃时被bugly记录的堆栈就更难看出什么猫腻了。

调度器(Scheduler)


同事和我有几次发现,项目中的调度器并不能保证执行被添加进调度器中函数。当然觉得有点匪夷所思,也有可能是底层的什么bug,或者是当时程序中复杂的其它许多变量、环境造成的。后来发现,项目中的调度器(Scheduler)系统只是使用cocos2dx的动作系统包装而成(延迟动作+回调函数),就去网上搜了下:cocos2dx的动作系统(Action System)的序列动作(sequence action)有没有可能会出现丢失某个动作的可能(项目中的调度器相当于delayTime + callBack这两个动作组合而成)。发现确实有其他开发者遇到这种情况了

奈何cocos论坛人气貌似少得可怜,都没几个人回答。又去开发者群里问了下,有个网友指出:可能是执行这个动作的节点被销毁了或者重制了动画。又去查看项目封装的代码,发现项目中执行这个动作的节点是当时正在跑的场景节点(running scene)。仔细一想,还真有场景节点还没创建好,就使用这个节点执行一些动作的可能性存在!

后来我把出问题的地方,换成真正用来负责调度器功能的ccSchedule就OK了

后来我又换回原来使用调度器的方式了,因为使用ccSchedule会产生另外一个比较严重问题。。。