我正在学习Android5上的html5游戏编程,撰写太空侵略者克隆。游戏使用javascript呈现为画布。Android setTimeout在Android上锁定三星S4
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无法完成。
任何想法,为什么这是阻止?