cocos2d-x游戏的耗电量一直是个让人头疼的问题,一个简单的三消游戏,玩一会手机就热得发烫,更郁闷的是电池消耗很快,基本上两个小时就可以把电池耗光。
在github上看到一篇文章中说到:作者 研究了一下引擎代码,发现引擎的主绘制流程很简单,就是以固定的60fps重绘屏幕,即使是静止的屏幕,也是不变的60fps。其实这里是可以优化的,完全静止的画面,就不要刷新了!我修改了一下代码,做了一些测试,的确可以实现:在director类中增加一个dirty重绘标志,每帧绘制前都检测一下,没有置上就跳过这帧。
cocos2d-x通过两个方法来产生动画,一个是action(比如Move),一个是event(比如Touch);标准的action都是通过ActionManager来管理的,所以只要在ActionManager的update()函数中设置重绘即可,event是通过eventDispatcher统一管理的,也可以在这个类统一设置。
具体网站:PR:https://github.com/cocos2d/cocos2d-x/pull/6178
但是,如果你不通过action和event来更新图像,比如说直接设置节点的位置,或者自定义schedule回调函数,就需要自己设置重绘标志。