在javasscript中,我重复使用setTimeout来重绘我的HTML5画布。
function doDraw() {
drawOnCanvas();
setTimeout(doDraw, 20);
}
我在Android浏览器上遇到问题。 (也许在iOS上,我还没有测试过......): 1.一切顺利 我按下了android" home"按钮并做其他事情 3.我回到浏览器。 4. 问题:未安排setTimeout再次执行。
所以我的屏幕刷新循环停止了,游戏已经死了"。
编辑:现在好了,我继续调查。原来setTimeout仍然有效。真正的问题是画布从屏幕上消失了,我画的没有显示出来。画布只是空白。
答案 0 :(得分:1)
对于渲染循环,始终建议使用requestAnimationFrame
,因为它确切地知道何时安排回调,即完成浏览器重绘的最佳时隙。
通过使用setTimeout
,您将跳过帧,这将导致严重的jankyy动画
就问题而言,您可以重新启动文档加载循环
window.onload = function(){doDraw();}
我希望有效。
答案 1 :(得分:0)
现在,我继续调查。原来setTimeout仍然有效。真正的问题是画布从屏幕上消失了,我画的没有显示出来。画布只是空白。我现在会尝试解决这个问题。 (requestAnimationFrame无论如何都不起作用。)
我正在结束这个问题,因为我问的是错误的问题