Android Samsung S4上的Javascript设置超时被阻止
我正在Android上学习html5游戏编程,编写一个太空入侵者克隆。使用javascript将游戏渲染到画布上 SetTimeout用于每隔15毫秒调用一个NewTurn函数。NewTurn函数计算移动并调用context.drawImage在屏幕上绘制玩家和入侵者 在我的Nexus7上,我没有问题。在三星S4上,用户触摸屏幕之前一切正常。发生这种情况时,加载NewTurn的SetTimeout将被阻止 这是我的密码:Android Samsung S4上的Javascript设置超时被阻止,javascript,android,html,Javascript,Android,Html,我正在Android上学习html5游戏编程,编写一个太空入侵者克隆。使用javascript将游戏渲染到画布上 SetTimeout用于每隔15毫秒调用一个NewTurn函数。NewTurn函数计算移动并调用context.drawImage在屏幕上绘制玩家和入侵者 在我的Nexus7上,我没有问题。在三星S4上,用户触摸屏幕之前一切正常。发生这种情况时,加载NewTurn的SetTimeout将被阻止 这是我的密码: function NewTurn() { var timeStart =
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
你知道为什么会阻塞吗?我仍然不知道为什么会阻塞SetTimeout。但是使用requestAnimationFrame而不是SetTimeout可以解决这个问题 有关requestAnimationFrame的详细信息,请参见其他StackOverflow线程,如下所示: