Я использую функцию jQuery queue()
для анимации набора изображений один за другим. Я хочу, чтобы очередь выполнялась случайным числом раз каждый раз, когда она выполняется. Вот JS, который устанавливает очередь:
//rotate colors function
function rotateColors() {
for (var i=0; i<7; i++) {
isAnimating = true;
color.delay(50).eq(i).fadeIn(100);
color.delay(100).eq(i).fadeOut(100);
}
}
//rotate colors on button click
button.bind('click', function() {
color.queue(function(n) {
rotateColors();
n();
});
});
Как я могу сделать так, каждый раз, когда эта очередь активируется, она будет выполняться случайным числом раз?
Используйте Math.random()
для генерации случайного числа.
function rotateColors() {
var rnd = Math.floor(Math.random() * 10) + 1; // generate random number between 1 and 10
for (var i = 0; i < rnd; i++) {
isAnimating = true;
color.delay(50).eq(i).fadeIn(100);
color.delay(100).eq(i).fadeOut(100);
}
}
//rotate colors on button click
button.bind('click', function() {
color.clearQueue().queue(function(n) {
rotateColors();
n();
});
});
Примечание. Я добавил clearQueue()
в обработчик click
чтобы предотвратить увеличение количества действий в очереди при последовательных кликах.
clearQueue
.