Javascript 当分数上升时,我如何减少设置间隔?
我正在做一个类似俄罗斯方块的小游戏。我需要随着球员得分的上升,积木下降得更快。我目前有以下代码:Javascript 当分数上升时,我如何减少设置间隔?,javascript,setinterval,Javascript,Setinterval,我正在做一个类似俄罗斯方块的小游戏。我需要随着球员得分的上升,积木下降得更快。我目前有以下代码: setInterval(function(){ if(gameOn == 1){ gravity(); } },1000); 这将调用我的重力函数,它使块下降,并进行所有碰撞检测等 var time = 1000 - score; setInterval(function(){ if(gameOn == 1){ hideSt
setInterval(function(){
if(gameOn == 1){
gravity();
}
},1000);
这将调用我的重力函数,它使块下降,并进行所有碰撞检测等
var time = 1000 - score;
setInterval(function(){
if(gameOn == 1){
hideStuff('hover');
gravity();
time = 1000 - score;
}
},time);
我原以为这样可能行得通,但似乎行不通。有什么想法吗?谢谢您可以使用超时而不是间隔,并在回调结束时将所需时间设置为新的超时。这样,您就不需要每次更改时间时都清除间隔 大概是这样的:
// Some initial time to use
var time = 1000;
// Set the first timeout
setTimeout(callback, time);
function callback(){
if(gameOn == 1){
hideStuff('hover');
gravity();
time = 1000 - score;
// Set a new timeout with your new time
setTimeout(callback, time);
}
}
无论何时更改延迟,您都需要重新启动:
window.icount = setInterval(function(){
if(gameOn == 1){
gravity();
}
},1000);
var time = 1000 - score;
clearInterval(window.icount);
window.icount = setInterval(function(){
if(gameOn == 1){
hideStuff('hover');
gravity();
time = 1000 - score;
}
},time);
您可以执行
setTimeout
循环。这样,对setTimeout
的每次调用都将反映对time
var time = 1000;
(function foo(){
if(gameOn == 1){
hideStuff('hover');
gravity();
time = 1000 - score;
}
setTimeout(foo,time);
}());
您必须清除现有的计时器对象,并使用修改后的时间创建一个新的计时器对象。您需要使用setTimeout而不是setInterval,如下所示:
setTimeout (function play () {
if (gameOn == 1){
hideStuff('hover');
gravity();
time = 1000 - score;
setTimeout (play, 1000 - score);
}
}, 1000);
这是一个答案,如果第一个代码实际工作(但不会更快),您还没有真正告诉我们发生了什么 在你的系统中,你的分数不可能等于或超过1000,因为计时器设置为零或更低。
我会慢慢地减少每次“滴答”的次数,并设置一个最小值(比如100)。玩家将无法跟上方块下降的速度,但设置一个最小值听起来是个好主意。谢谢