【发布时间】:2016-01-25 19:00:29
【问题描述】:
我正在Android上学习html5游戏编程,写一个太空入侵者克隆。游戏使用 javascript 渲染到画布上。
SetTimeout 用于每 15 毫秒调用一次 NewTurn 函数。 NewTurn 函数计算移动并调用 context.drawImage 在屏幕上绘制玩家和入侵者。
在我的 Nexus 7 上,我没有任何问题。在三星 S4 上一切都很好,直到用户触摸屏幕。发生这种情况时,加载 NewTurn 的 SetTimeout 将被阻止。
这是我的代码:
function NewTurn()
{
var timeStart = getTime();
UpdateSpritePositions();
RenderSprites(); // Uses context.drawImage()
var timeEnd = getTime();
setTimeout(NewTurn, 15);
}
如果我将手指放在屏幕上并无限期地拖动它,那么在我抬起手指之前不会调用 NewTurn。
timeEnd - timeStart 一直在 3 毫秒左右。
timeStart - timeEnd 因我是否以及如何触摸屏幕而异。
我尝试删除所有 javascript onTouch 处理程序,但这对我的问题没有影响。然后我尝试删除所有渲染,我的问题就消失了。所以在我看来,触摸屏幕可能会阻止渲染,并且可能 setTimeout 在渲染完成之前无法完成。
关于为什么会阻塞的任何想法?
【问题讨论】:
标签: javascript android html