在 JavaScript 中,我反复使用 setTimeout 来重绘 HTML5 Canvas 。
function doDraw() {
drawOnCanvas();
setTimeout(doDraw, 20);
}
我在 Android 浏览器上遇到问题。 (也许在 iOS 上,我还没有测试过......): 1.一切正常 2.我按下android“home”按钮并执行其他操作 3. 我回到浏览器。 4. 问题:setTimeout 没有安排再次执行。
所以我的屏幕刷新循环停止了,游戏就“死了”。
编辑:现在,我继续调查。结果 setTimeout 仍然有效。真正的问题是 Canvas 从屏幕上消失,我绘制的任何内容都没有显示。 Canvas 只是空白。
最佳答案
对于渲染循环,始终建议使用 requestAnimationFrame
因为它确切地知道何时安排回调,即完成浏览器重绘的最佳时间段。
通过使用setTimeout
,您将跳过帧,这将导致严重的卡顿动画
就问题而言,您可以在文档加载时重新启动循环
window.onload = function() {doDraw();}
我希望这能起作用。
关于Android 上下文切换中的 javascript settimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27331187/