解决cocos2dx-js在安卓X5浏览器中卡的问题,包括微信(纯干货)

我们游戏在微信中打开,非常卡,而其他浏览器正常,经过研究终于找到了病因和解决方案.

病因:
安卓X5浏览器有canvas数量限制,硬件加速只支持前5个CANVAS,而coco2dx在代码初始化时就会创建5个以上的CANVAS,并且使用,导致主CANVAS无法获得加速,导致卡
腾讯官方关于canvas数量的回答:
canvas的数量是不是有限制?
回答;小于1G的内存, canvas的内存不能超过100M
1G到2G的内存, canvas的内存不能超过300M
大于2G的内存 canvas的内存不能超过500M
为了防止内存占用过多,硬件加速的CANVAS最多支持5个,小于等于1G内存手机,由于内存没办法精确统计,当达到75M以上,CANVAS数量最多支持20个 。
上面说的canvas内存,仅仅是说canvas 长宽计算出来的内存,不包括canavs使用的图片等资源内存

地址:http://bbs.mb.qq.com/thread-215666-1-1.html?fid=92

解决方案:
只要在coco2dx代码加载前,使用一次主canvas,让主canvas抢先获得加速效果,问题就解决了,代码:

大哥,你这方法不行啊。在index中加入你的代码后,再执行main.js就会报错,错误如下:

Uncaught TypeError: gl.getParameter is not a function
CCEGLView.js:624 Uncaught TypeError: Cannot set property ‘width’ of undefined
CCDirectorWebGL.js:152 Uncaught TypeError: gl.clear is not a function
CCEGLView.js:624 Uncaught TypeError: Cannot set property ‘width’ of undefined
CCDirectorWebGL.js:152 Uncaught TypeError: gl.clear is not a function
CCEGLView.js:624 Uncaught TypeError: Cannot set property ‘width’ of undefined

求解答

加入楼主这个 safari 浏览器报错的 只有去掉了

是啊,楼主出来解答以下行不,急求:11::11:

没试,先占个位子,随时回来看结果

贴个完整的代码,我看下

我的index.html代码如下:

test body, canvas, div { -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; -khtml-user-select: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); }

一运行就不断的出错,删掉你那部分添加的代码就没问题。
请教是什么问题?

在cpu模式也就是
“renderMode” : 1
模式下有效,gl模式会报错.具体原因不清楚.