2016-01-25 201 views
1

我正在学习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无法完成。

任何想法,为什么这是阻止?

回答

1

我仍然不知道为什么SetTimeout被阻止。但是使用requestAnimationFrame而不是SetTimeout可以解决这个问题。

有关requestAnimationFrame的详细信息,请参阅其他StackOverflow线程,例如:How to use requestAnimationFrame?

相关问题