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会改变。我该如何让温度变化变化?我希望这不是一个愚蠢的问题,但我已经被困在这里多年了。你们是我唯一的希望。 :)
答案 0 :(得分:1)
您正尝试动态更改时间间隔。 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
}
答案 1 :(得分:0)
您应该使用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);
}