我正在學習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無法完成。
任何想法,爲什麼這是阻止?