Poczekaj, aż ustawiono setInterval ()
Chciałbym dodać do mojego kodu Javascript mały efekt toczenia kostką. Myślę, że dobrym sposobem jest użyciesetInterval()
metoda. Moim pomysłem był następujący kod (tylko do testowania):
function roleDice() {
var i = Math.floor((Math.random() * 25) + 5);
var j = i;
var test = setInterval(function(){
i--;
document.getElementById("dice").src = "./images/dice/dice" + Math.floor((Math.random() * 6) + 1) + ".png";
if(i < 1) {
clearInterval(test);
}
}, 50);
}
Teraz chciałbym poczekać na setInterval, aż się skończy. Dodałem więc setTimeout.
setTimeout(function(){alert("test")}, (j + 1) * 50);
Ten kod działa całkiem dobrze. Ale w moim głównym kodzieroleDice()
funkcja zwraca wartość. Teraz nie wiem, jak sobie z tym poradzić ... Nie mogę wrócić zsetTimeout()
. Jeśli dodam powrót do końca funkcji, powrót wzrośnie do szybkiego. Czy ktoś ma pomysł, jak mogę to naprawić?
Edytować Hmm, dobrze rozumiem, jaka jest dawka wywołania zwrotnego i myślę, że wiem, jak to działa, ale wciąż mam problem. Myślę, że to bardziej problem z interfejsem ... Oto mój kod:
function startAnimation(playername, callback) {
var i = Math.floor((Math.random() * 25) + 5);
var int = setInterval(function() {
i--;
var number = Math.floor((Math.random() * 6) + 1);
document.getElementById("dice").src = "./images/dice/dice" + number + ".png";
if(i < 1) {
clearInterval(int);
number = Math.floor((Math.random() * 6) + 1);
addText(playername + " rolled " + number);
document.getElementById("dice").src = "./images/dice/dice" + number + ".png";
callback(number);
}
}, 50);
}
function rnd(playername) {
var callback = function(value){
return value; // I knew thats pointless...
};
startAnimation(playername, callback);
}
Funkcjarnd()
powinien poczekać i zwrócić wartość… Jestem trochę zmieszany. W tej chwili nie mam pojęcia, jak się zachować ... Kod czeka navar callback...
ale jak mogłem połączyć to z powrotem? Chciałbym uruchomić animację i wrócić po tym ostatnim numerze zrnd()
do innej funkcji.