2014-12-07 6 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는 변경되지 않습니다. 어떻게 스폰 속도가 바뀌게 할 수 있습니까? 나는 어리석은 질문이 아니길 바래.하지만 나는 여기 오래 동안 붙어있다. 너희들은 내 유일한 희망이야. :)변수 간격 속도 설정

+0

하고이 외부의 setTimeout을 (가지고)과 전에 넣어주는 경우 (spawnSpeed> 50) {spawnSpeed ​​= spawnSpeed ​​- 231;} – vodich

+0

은 당신이 setInterval을을 사용했다(); 이전 코멘트를 무시하십시오 – vodich

답변

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

0

setTimeout을 사용하거나 간격을 지우고 다시 실행해야합니다. setInterval은 특정 ID 및 시간 간격으로 간격을 등록합니다. 그 중 하나, 2 초의 시간 범위가있는 첫 번째 것입니다. 나는 문제를 극복하기 위해 setTimeout을 사용하는 것을 선호한다. 여기 plunk가 있습니다. 코드와 결과를 볼 수 있습니다. 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); 
}