在Android Samsung S4上阻止了Javascript setTimeout

时间:2016-01-25 19:00:29

标签: javascript android html5

我正在学习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。

关于为什么阻止它的任何想法?

1 个答案:

答案 0 :(得分:1)

我仍然不知道SetTimeout被阻止的原因。但是使用requestAnimationFrame而不是SetTimeout可以解决它。

requestAnimationFrame的详细信息在其他StackOverflow线程中,例如:How to use requestAnimationFrame?