我有 setTimeout 的问题。
在所有主要浏览器中它都可以正常工作,但在 IE 中却不行……我正在创建一个 facebook 应用程序拼图。当玩家按下开始按钮时,计时器开始计算他玩一局游戏的时间。一开始我使用 setInterval 来增加计时器,但在 facebook 脚本的配合下,它在游戏结束时延迟了大约 2 秒。然后我在 stackoverflow 上发现了提高计时器准确性的技巧:setInterval 计时慢慢偏离保持准确 再次 - 没有 facebook 它工作正常,没有显示延迟。使用 facebook,它仍然有延迟。现在浓缩您可能感兴趣的信息:当用户单击开始时,我创建新的日期作为开始时间。当用户结束游戏脚本创建 finalTime 新日期,然后减去 finalTime - startTime。
在代码中有setTimeout:
(...)
f : function() {
var sec_time = Math.floor((puzzle.nextAt - puzzle.startTime)/1000);
$('.timer').html(sec_time);
if (!puzzle.startTime) {
puzzle.startTime = new Date().getTime();
puzzle.nextAt = puzzle.startTime;
$('.timer').html('0');
}
puzzle.nextAt += 100;
puzzle.to = setTimeout(puzzle.f, puzzle.nextAt - new Date().getTime());
}
(...)
当用户将最后一块拼图放在正确的位置时,我调用 clearTimeout(puzzle.to);
我现在有2个问题:
时间不准确,在IE中甚至可以相差7秒!
在游戏期间的 IE 中,它仅在用户按下鼠标时才有效...:/
要拖动拼图,我使用 jQuery 拖放插件。至少非常有用的信息将是如何实现准确的计时器。