在creator生成web程序后会出现2类错误,一类是不会导致web界面卡死的错误,一类是会导致web界面卡死的错误。第二类错误一般是由于跟图形界面相关的错误导致的。解决界面卡死的办法是在发布的cocos2d-js.js文件中找到runMainLoop函数,把director.mainLoop()语句用try catch保护起来,修改后是这个样子:
_runMainLoop: function() {
var self = this, callback, config = self.config, CONFIG_KEY = self.CONFIG_KEY, director = cc.director, skip = true, frameRate = config[CONFIG_KEY.frameRate];
director.setDisplayStats(config[CONFIG_KEY.showFPS]);
callback = function() {
if (!self._paused) {
if (30 === frameRate && (skip = !skip)) {
self._intervalId = window.requestAnimFrame(callback);
return;
}
try{
director.mainLoop();
}
catch(e)
{
console.log(e);
}
//director.mainLoop();
self._intervalId = window.requestAnimFrame(callback);
}
};
self._intervalId = window.requestAnimFrame(callback);
self._paused = false;
},
这样就不会出现很严重的未知错误导致界面卡死程序假死的情况了,希望这个方法能对大家有用。
1赞
在 mainloop 外包 try catch 还是会造成比较严重的性能问题的,不建议这样做
我的看法是:崩溃是不需要保护的,而是需要发布前被解决的
1赞