设置可变间隔速度
问题描述:
var dropSpeed = 3750;
var spawnSpeed = 2000;
var i = 0;
function makeSymbol(sym)
{
setInterval(function(){
if(dropSpeed > 1500){dropSpeed = dropSpeed - 350;}if(spawnSpeed > 50){spawnSpeed = spawnSpeed - 231;}
var aSymbol = sym.createChildSymbol("aSymbol" ,"stage");
i = i + 1;
symbols[i] = aSymbol.getSymbolElement();
symbols[i].animate({top: "950px"},dropSpeed); //uses the changed dropspeed
},spawnSpeed); //does not use the change spawnSpeed but keeps using the 2000
}
spawnSpeed不会改变,但dropSpeed会改变。我怎么能让spawnspeed改变?我希望这不是一个愚蠢的问题,但我在这里呆了很久。你们是我唯一的希望。 :)设置可变间隔速度
答
您正试图动态更改时间间隔。 setInterval
适用于静态时间间隔。相反setTimeout
函数可以用于此。
尝试类似这样的东西。
var dropSpeed = 3750;
var spawnSpeed = 2000;
var i = 0;
function makeSymbol(sym)
{
setTimeout(function(){
if(dropSpeed > 1500){dropSpeed = dropSpeed - 350;}if(spawnSpeed > 50){spawnSpeed = spawnSpeed - 231;}
var aSymbol = sym.createChildSymbol("aSymbol" ,"stage");
i = i + 1;
symbols[i] = aSymbol.getSymbolElement();
symbols[i].animate({top: "950px"},dropSpeed); //uses the changed dropspeed
makeSymbol(sym);
},spawnSpeed); //does not use the change spawnSpeed but keeps using the 2000
}
+0
谢谢!我的思想被困在setInterval上。 – user3656836 2014-12-07 13:56:04
答
您应该使用setTimeout或清除间隔并尝试再次运行它。 setInterval注册一个具有特定id和时间间隔的时间间隔。这是第一次,也是2秒钟的时间。我宁愿使用setTimeout来解决这个问题。这是一个庞然大物,你可以看到代码和结果。 Plunk here
function makeSymbol(sym)
{
var test = function (){
if(dropSpeed > 1500){dropSpeed = dropSpeed - 350;}
if(spawnSpeed > 50){spawnSpeed = spawnSpeed - 231;}
if(spawnSpeed <= 4) spawnSpeed = 2000;
$("#speed").text((new Date()));
setTimeout(test, spawnSpeed);
}
setTimeout(test,spawnSpeed);
}
,如果你把这个外面的setTimeout()和前 把它如果(spawnSpeed> 50){spawnSpeed = spawnSpeed - 231;} – vodich 2014-12-07 13:35:10
刚才看到您使用的setInterval();无视以前的评论 – vodich 2014-12-07 13:40:47