cocos2dx新研发的游戏,手机运行时非常热的解决方案

cocos2dx新研发的游戏,手机运行时非常热,有需要的朋友可以参考下。

cocos2dx新研发的游戏,手机上运行时导致手机非常热,后来听其他项目组分享时得知,可以通过降帧解决这个问题,原来是cocos2dx默认的60,后来修改为30,测试发现,手机发热问题解决了。

修改代码:

AppDelegate.cpp

// set FPS. the default value is 1.0/60 if you don‘t call this

pDirector->setAnimationInterval(1.0 / 30);

还有就是:Cocos2dxRenderer.java

//private static long sAnimationInterval = (long) (1.0 / 60 * Cocos2dxRenderer.NANOSECONDSPERSECOND);

private static long sAnimationInterval = (long) (1.0 / 30 * Cocos2dxRenderer.NANOSECONDSPERSECOND);

...

@Override

public void onDrawFrame(final GL10 gl) {

/*

* FPS controlling algorithm is not accurate, and it will slow down FPS

* on some devices. So comment FPS controlling code.

*/

final long nowInNanoSeconds = System.nanoTime();

// should render a frame when onDrawFrame() is called or there is a

// "ghost"

Cocos2dxRenderer.nativeRender();

final long afterRenderNano = System.nanoTime();

//final long interval = afterRenderNano - mLastTickInNanoSeconds - Cocos2dxRenderer.sAnimationInterval;// afterRenderNano - nowInNanoSeconds;//nowInNanoSeconds - this.mLastTickInNanoSeconds;

final long interval = afterRenderNano - nowInNanoSeconds;

// fps controlling

if (interval < Cocos2dxRenderer.sAnimationInterval) {

//Log.d("onDrawFrame", "Cancel frame" + interval + "/" +Cocos2dxRenderer.sAnimationInterval);

try {

// because we render it before, so we should sleep twice time interval

Thread.sleep((Cocos2dxRenderer.sAnimationInterval - interval) / Cocos2dxRenderer.NANOSECONDSPERMICROSECOND);

} catch (final Exception e) {

}

}

//this.mLastTickInNanoSeconds = nowInNanoSeconds;

}
时间: 2024-10-29 19:06:16

cocos2dx新研发的游戏,手机运行时非常热的解决方案的相关文章

解决激光推送手机运行时内存杀死进程依然能收到推送

} if (ACTION_BOOT.equals(intent.getAction())||ACTION_NET_CHANGE.equals(intent.getAction())){ Intent service = new Intent(context,DownloadService.class); context.startService(service); Intent pSrvice = new Intent(context,PushService.class); context.st

Java运行时数据区域划分

Java运行时数据区域划分 Java JVM 内存 堆 栈 1. 概述 对于Java程序员来说,在虚拟机自动内存管理机制下,不容易出现内存泄漏和内存溢出现象.但如果不了解虚拟机是如何使用内存的,一旦出现了内存泄漏和溢出方面的问题,那么排错就无从下手了. 2. 运行时数据区域 Java虚拟机在执行Java程序的过程中会将它所管理的内存划分为若干个不同的数据区域,如下图所示. 2.1. 程序计数器 程序计数器(Program Counter Register):是一块较小的内存空间,可以看做是当前线

Android M 新的运行时权限开发者需要知道的一切

本文来自微凉一季的博客http://jijiaxin89.com/2015/08/30/Android-s-Runtime-Permission/ 更多文章点击跳转微凉一季 tags: 翻译,这是一篇译文. android M 的名字官方刚发布不久,最终正式版即将来临! android在不断发展,最近的更新 M 非常不同,一些主要的变化例如运行时权限将有颠覆性影响.惊讶的是android社区鲜有谈论这事儿,尽管这事很重要或许在不远的将来会引发很严重的问题. 这是今天我写这篇博客的原因.这里有一切

Android M新的运行时权限开发者需要知道的一切

android M 的名字官方刚发布不久,最终正式版即将来临!android在不断发展,最近的更新 M 非常不同,一些主要的变化例如运行时权限将有颠覆性影响.惊讶的是android社区鲜有谈论这事儿,尽管这事很重要或许在不远的将来会引发很严重的问 题.这是今天我写这篇博客的原因.这里有一切关于android运行时权限你需要知道的,包括如何在代码中实现.现在亡羊补牢还不晚. 作者:微凉一季来源:简书翻译|2015-08-31 09:41 分享 翻译的国外一篇文章. android M 的名字官方刚

permission 新 运行时权限 6.0 总结

demo地址:https://github.com/baiqiantao/PermissionTest.git 关于运行时权限 在旧的权限管理系统中,权限仅仅在App安装时询问用户一次,用户同意了这些权限App才能被安装(某些深度定制系统另说),App一旦安装后就可以偷偷的做一些不为人知的事情了(同样,某些深度定制系统另说). 从Android6.0开始,App可以直接安装,App在运行时一个一个询问用户是否授予权限,系统会弹出一个对话框让用户选择是否授权某个权限给App(这个Dialog是系统

ART运行时为新创建对象分配内存的过程分析

ART运行时和Dalvik虚拟机一样,在堆上为对象分配内存时都要解决内存碎片和内存不足问题.内存碎片问题可以使用dlmalloc技术解决.内存不足问题则通过垃圾回收和在允许范围内增长堆大小解决.由于垃圾回收会影响程序,因此ART运行时采用力度从小到大的进垃圾回收策略.一旦力度小的垃圾回收执行过后能满足分配要求,那就不需要进行力度大的垃圾回收了.本文就详细分析ART运行时在堆上为对象分配内存的过程. 本博参加博客之星评选,求投票:点击投票 老罗的新浪微博:http://weibo.com/shen

一行代码解决Android M新的运行时权限问题

Android M运行时权限是个啥东西 啥是运行时权限呢?Android M对权限管理系统进行了改版,之前我们的App需要权限,只需在manifest中申明即可,用户安装后,一切申明的权限都可来去自如的使用.但是Android M把权限管理做了加强处理,在manifest申明了,在使用到相关功能时,还需重新授权方可使用.当然,不是所有权限都需重新授权,所以就把这些需要重新授权方可使用的权限称之为运行时权限. 运行时权限的影响 运行时权限的好处可以让用户使用时更有主动权,不会让app随便乱来.但是

C++11 新特性,运行时断言与静态断言

C98或C99中的库为:<cassert> 或<assert.h> 运行时断言,故明思议是当程序在运行的时候才作为判决,可以认为是对参数的有效性的判断. 而静态断言,是对参数的条件判断提前做了,在预编译的时候进行完成的.如: //demo1.cpp #include <cassert> using namespace std; char *arrayAolloc(int n){ assert(n>0); return new char [n]; } int mai

cocos2d-x 2.2.3 游戏过烫

项目上线了,目前有个问题是手机运行一阵就会很烫,特别是在安卓平台上,发烫问题蛮严重的.google了一下,大家都反映是60帧的帧频导致的这个原因,而安卓平台设置帧频又没有实现(详见项目中Cocos2dxRenderer.java的onDrawFrame方法,大部分代码被屏蔽了).github上有个比较成熟的解决方案是在渲染代码中加上更新标志,只有当ccTouch事件和ccAction事件触发时(也就是需要画面进行重绘时)执行屏幕更新操作,不过涉及到改源码,目前需要时间测试所以没有采用,目前是使用