微信确实有可能在启动的第一帧出现时间回退的情况。按理说后续就不会这样了,做个保护吧 @337031709
嗯,我看下。
请问问题解决了吗,我的游戏线上很多报这个递归的错
你试下这样改下:
if (this._deltaTime < 0) {
this._lastUpdate = now;
this.calculateDeltaTime();
return;
}
我本地没能复现问题,现在不太确定 now 这个参数的变化规律是什么,现在假定 now 在一次异常变小之后稳步增大,那么这样修改应该能够解决问题。
可以试试我的回复里的做法。
2.2.1 正式版本发的微信开发版,也遇到了这个问题:
Maximum call stack size exceeded;at requestAnimationFrame callback function
RangeError: Maximum call stack size exceeded
at 28.cc.Director.calculateDeltaTime (https://usr/game.js:3:126319)
at 28.cc.Director.calculateDeltaTime (https://usr/game.js:3:126412)
at 28.cc.Director.calculateDeltaTime (https://usr/game.js:3:126412)
at 28.cc.Director.calculateDeltaTime (https://usr/game.js:3:126412)
at 28.cc.Director.calculateDeltaTime (https://usr/game.js:3:126412)
at 28.cc.Director.calculateDeltaTime (https://usr/game.js:3:126412)
at 28.cc.Director.calculateDeltaTime (https://usr/game.js:3:126412)
at 28.cc.Director.calculateDeltaTime (https://usr/game.js:3:126412)
at 28.cc.Director.calculateDeltaTime (https://usr/game.js:3:126412)
at 28.cc.Director.calculateDeltaTime (https://usr/game.js:3:126412)
手动改一下 cc.Director.prototype.calculateDeltaTime方法就行了
请问我那样修改能解决问题么,我本地复现不了问题。
我这边暂时没遇到了,下周线上更新了再看看
嗯嗯嗯
请问现在情况怎样。。。
你好,我改了还是一样出现这个问题,很多玩家在10+秒流失了。。。因为进不来游戏
我改了CocosCreator_2.2.1\resources\engine\cocos2d\core\CCDirector.js里的
编译以后的cocos2d-js-min.js里面是这样的:就是我改成功了吧?
calculateDeltaTime:function(t){if(t||(t=performance.now()),this._deltaTime=(t-this._lastUpdate)/1e3,this._deltaTime<0)return this._lastUpdate=t,void this.calculateDeltaTime();this._lastUpdate=t}
会不会是微信新的引擎插件搞的?我改了这里,但是微信那的引擎里还是老的?
很抱歉,这个代码是由于之前要修复这个问题:
而添加的,试试参考这个 PR 相同的方案修改一下引擎代码:
https://github.com/cocos-creator/engine/pull/5952
上周更新了这个修改
目前为止没有观察到上报了。
修改有效。
好的,谢谢反馈,最好是更新到和我 PR 一样的代码,因为之前那样也还是可能出现异常。
更上线观察了一天,没发现类似报错。
pr修复有效
你好,为啥我还是有这个出错。。。好想哭
构建出来的cocos2d-js-min.js里是这样的:
calculateDeltaTime:function(t){t||(t=performance.now()),this._deltaTime=t>this._lastUpdate?(t-this._lastUpdate)/1e3:0,this._lastUpdate=t}
但是新版本今天还是报错了
有用到引擎插件么
是的!!!引擎插件,那里不是同步更新吗?