2016-01-25 149 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?

相關問題