我想在我的 Javascript 代码中添加一个小骰子滚动效果。我认为一个好的方法是使用setInterval()
方法。我的想法是遵循代码(仅用于测试):
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);
}
现在我想等待 setInterval 直到它完成。所以我添加了一个 setTimeout。
setTimeout(function(){alert("test")}, (j + 1) * 50);
这段代码工作得很好。但在我的主代码中,该roleDice()
函数返回一个值。现在我不知道我该如何处理......我无法从setTimeout()
. 如果我在函数末尾添加一个返回,返回将提高到快。有谁知道,我该如何解决?
编辑 嗯,好吧,我了解回调剂量,我想我知道它是如何工作的,但我仍然有问题。我认为这更像是一个“接口”问题......这是我的代码:
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);
}
该函数rnd()
应该等待并返回值……我有点困惑。目前我不知道该怎么做......代码等待var callback...
但我如何将它与返回结合起来?我想运行动画并在最后一个数字之后返回rnd()
另一个函数。