2014-12-07 84 views
1
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改變?我希望這不是一個愚蠢的問題,但我在這裏呆了很久。你們是我唯一的希望。 :)設置可變間隔速度

+0

,如果你把這個外面的setTimeout()和前 把它如果(spawnSpeed> 50){spawnSpeed = spawnSpeed - 231;} – vodich 2014-12-07 13:35:10

+0

剛纔看到您使用的setInterval();無視以前的評論 – vodich 2014-12-07 13:40:47

回答

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 
} 
+0

謝謝!我的思想被困在setInterval上。 – user3656836 2014-12-07 13:56:04

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