Android上下文开关上的javascript设置超时
在javasscript中,我反复使用setTimeout重新绘制HTML5画布Android上下文开关上的javascript设置超时,javascript,android,html,mobile,Javascript,Android,Html,Mobile,在javasscript中,我反复使用setTimeout重新绘制HTML5画布 function doDraw() { drawOnCanvas(); setTimeout(doDraw, 20); } 我在Android浏览器上遇到问题。(可能也是在iOS上,我还没有测试过…) 1.一切正常 2.我按下安卓“主页”按钮,然后做其他事情 3.我回到浏览器。 4. 问题:未计划再次执行setTimeout。 因此,我的屏幕刷新循环停止,游戏“死亡” 编辑:现在,我继续调查。事实证
function doDraw() {
drawOnCanvas();
setTimeout(doDraw, 20);
}
我在Android浏览器上遇到问题。(可能也是在iOS上,我还没有测试过…)
1.一切正常
2.我按下安卓“主页”按钮,然后做其他事情
3.我回到浏览器。
4. 问题:未计划再次执行setTimeout。
因此,我的屏幕刷新循环停止,游戏“死亡”
编辑:现在,我继续调查。事实证明setTimeout仍然有效。真正的问题是画布从屏幕上消失了,我画的东西什么也看不出来。画布上一片空白 对于渲染循环,建议始终使用
requestAnimationFrame
,因为它确切地知道何时安排回调,即完成浏览器重新绘制的最佳时间段。
通过使用setTimeout
您将跳过帧,这将导致严重的Jankey动画
就问题而言,您可以在加载文档时重新启动循环
window.onload=函数(){doDraw();}
我希望能奏效。现在,我继续调查。事实证明setTimeout仍然有效。真正的问题是画布从屏幕上消失了,我画的东西什么也看不出来。画布上一片空白。我现在会设法解决这个问题。(与此无关,requestAnimationFrame无法工作)
我结束这个问题是因为我问错了问题不够好。。。。1.requestAnimationFrame在桌面上运行得很好,但是android股票浏览器在我的JellyBean手机上不支持它。2.仅切换回时是否会再次调用window.onload?我认为只有当页面第一次加载时才会调用它。您可以使用“webkitvisibilitychange”文档。addEventListener(“webkitvisibilitychange”,handler);现在,我继续调查。事实证明setTimeout仍然有效。真正的问题是画布从屏幕上消失了,我画的东西什么也看不出来。画布上一片空白。我现在会设法解决这个问题。(与此无关,requestAnimationFrame无法工作)