JavaScript Firefox 中基于时间的分数
JavaScript time-based score in Firefox
所以我遇到了这个问题,
我有一个分数函数,它每秒增加一个,它在 Google Chrome(版本 53.0.2785.116 m)、Microsoft Edge (25.10586.0.0) 中有效,但不起作用在 Firefox(版本 49.0.1)中。这可能是由于日期格式不同造成的吗?
下面的代码是我对 canvas 游戏的基于时间的分数。函数获取从执行开始的日期,每秒加1。
关键是分数从0开始,每秒增加1,在浏览器中达到100。
正在寻找任何可以在 Firefox 上运行的解决方案 - 目前 'score' 显示为静态并且不向上计数,这与 Google Chrome 和 Edge 不同。
有什么想法吗? - JS 新手。
预先感谢您的帮助。
var start = new Date().getTime(),
score = '0.1';
var interval = window.setInterval(function() {
var time = new Date().getTime() - start;
score = Math.floor(time / 1000);
if(score === 100) {
window.clearInterval(interval);
if(!alert("You win!\nPress 'OK' to play again")){
window.location.reload();
}
}
document.getElementById('displayScore').innerHTML = score += '.00 Score';
});
<div id="displayScore"></div>
您需要在 setIntetval 中传递延迟,因为如果您不这样做,firefox 会假定默认值为 10(毫秒)
delay
The time, in milliseconds (thousandths of a second), the timer should delay in between executions of the specified function or code. If this parameter is less than 10, a value of 10 is used.
这使得它 运行 每 10 毫秒它是一个非常低的值,所以当你像 score = Math.floor(time / 1000);
这样计算时,结果值接近于零并且你的 var 永远不会增加
所以我遇到了这个问题,
我有一个分数函数,它每秒增加一个,它在 Google Chrome(版本 53.0.2785.116 m)、Microsoft Edge (25.10586.0.0) 中有效,但不起作用在 Firefox(版本 49.0.1)中。这可能是由于日期格式不同造成的吗?
下面的代码是我对 canvas 游戏的基于时间的分数。函数获取从执行开始的日期,每秒加1。
关键是分数从0开始,每秒增加1,在浏览器中达到100。
正在寻找任何可以在 Firefox 上运行的解决方案 - 目前 'score' 显示为静态并且不向上计数,这与 Google Chrome 和 Edge 不同。
有什么想法吗? - JS 新手。 预先感谢您的帮助。
var start = new Date().getTime(),
score = '0.1';
var interval = window.setInterval(function() {
var time = new Date().getTime() - start;
score = Math.floor(time / 1000);
if(score === 100) {
window.clearInterval(interval);
if(!alert("You win!\nPress 'OK' to play again")){
window.location.reload();
}
}
document.getElementById('displayScore').innerHTML = score += '.00 Score';
});
<div id="displayScore"></div>
您需要在 setIntetval 中传递延迟,因为如果您不这样做,firefox 会假定默认值为 10(毫秒)
delay The time, in milliseconds (thousandths of a second), the timer should delay in between executions of the specified function or code. If this parameter is less than 10, a value of 10 is used.
这使得它 运行 每 10 毫秒它是一个非常低的值,所以当你像 score = Math.floor(time / 1000);
这样计算时,结果值接近于零并且你的 var 永远不会增加