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()
。関数の最後に return を追加すると、return が高速になります。どうすればそれを修正できますか?
編集 うーん、コールバックの量を理解しました。それがどのように機能するかはわかっていると思いますが、まだ問題があります。それはもっと「インターフェース」の問題だと思います...ここに私のコード:
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()
アニメーションを実行し、その後最後の数字を他の関数に返したいと思います。