设置变量的间隔速度

时间:2014-12-07 13:31:00

标签: javascript adobe-edge

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会改变。我该如何让温度变化变化?我希望这不是一个愚蠢的问题,但我已经被困在这里多年了。你们是我唯一的希望。 :)

2 个答案:

答案 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);
}