Egret社区
10银子
游戏中碰见的问题

浏览器打开游戏窗口切换窗口或游戏最小化时游戏逻辑不运行

有没有方法让最小化或切换窗口时保持游戏逻辑

急需解决方案  

最佳答案

查看完整内容

= = 其实就是把requestAnimationFrame改成这个 var requestAnimationFrame = function (callback) { return window.setTimeout(callback, 1000 / 60); };
分享到 :
1 人收藏

19 个回复

倒序浏览
klk001  登堂入室 | 2018-9-28 10:12:19
本帖最后由 klk001 于 2018-10-9 14:48 编辑


gamedaybyday  初窥堂奥 | 2018-9-27 17:37:23
= = 其实就是把requestAnimationFrame改成这个

var requestAnimationFrame  = function (callback) {
                    return window.setTimeout(callback, 1000 / 60);
                };



熊猫少女  官方团队 | 2018-9-27 17:56:35
注释掉这段代码
[AppleScript] 纯文本查看 复制代码
egret.lifecycle.onPause = () => {
            egret.ticker.pause();
         }
klk001  登堂入室 | 2018-9-28 09:49:09
熊猫少女 发表于 2018-9-27 17:56
注释掉这段代码[mw_shl_code=applescript,true]egret.lifecycle.onPause = () => {
            egret.tick ...

之前就已经注掉了   窗口最小化的时候还是不运行
klk001  登堂入室 | 2018-9-28 09:57:17
本帖最后由 klk001 于 2018-9-28 09:58 编辑
熊猫少女 发表于 2018-9-27 17:56
注释掉这段代码[mw_shl_code=applescript,true]egret.lifecycle.onPause = () => {
            egret.tick ...

是不是还有其他地方触发了暂停心跳的方法  
我打日志看了下  最小化的时候updata没执行
NIFX4UF]C12V1{}DG5${QDL.png
hui1993  登堂入室 | 2018-9-28 09:58:31
之前我在白鹭官方群里反应过了,整个egret web都是基于 requestAnimationFrame,这个api在页面切换或者浏览器最小化的时候停止,节省性能,可以在把下面这段代码注释掉
        /**
         * @private
         * 启动心跳计时器。
         */
        function startTicker(ticker) {
            var requestAnimationFrame
                  /* = window["requestAnimationFrame"] ||
                window["webkitRequestAnimationFrame"] ||
                window["mozRequestAnimationFrame"] ||
                window["oRequestAnimationFrame"] ||
                window["msRequestAnimationFrame"];*/
            if (!requestAnimationFrame) {
                requestAnimationFrame = function (callback) {
                    return window.setTimeout(callback, 1000 / 60);
                };
            }
            requestAnimationFrame(onTick);
            function onTick() {
                ticker.update();
                requestAnimationFrame(onTick);
            }
        }
klk001  登堂入室 | 2018-9-28 10:03:22
hui1993 发表于 2018-9-28 09:58
之前我在白鹭官方群里反应过了,整个egret web都是基于 requestAnimationFrame,这个api在页面切换或者浏览 ...

认真的吗 大哥  还行注掉游戏运行不了了  也不报错
klk001  登堂入室 | 2018-9-28 10:15:41
gamedaybyday 发表于 2018-9-28 10:13
= = 其实就是把requestAnimationFrame改成这个

var requestAnimationFrame  = function (callback) {


gamedaybyday  初窥堂奥 | 2018-9-28 10:19:29
klk001 发表于 2018-9-28 10:12
感谢各位启发  

解决方案  使用window的setInterval 来代替requestAnimationFrame   

要改引擎源码的代码,打包才不会改回去。

1062174-20180208200234482-885816255.jpg
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

klk001

登堂入室

积分: 34 帖子: 24 精华: 0

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号

Powered by Discuz! X3.2 © 2001-2019 Comsenz Inc.

返回顶部