Мне нужна помощь с чем-то, над чем я работаю в JavaScript/jQuery
Я хотел бы дать номер набора "назначение" и дать ему заданную продолжительность и иметь его таким образом, чтобы он складывался с интервалом 1 случайным образом на протяжении всей продолжительности (неравномерно, но не все в начале, в конце или в середине), но достижение номера "назначения" по продолжительности времени увеличивается.
Таким образом, если я установил продолжительность 20 секунд и номер "назначения" 10. Он запустит таймер и случайным образом добавит интервалы в 1 (без шаблона), а продолжительность будет завершена одновременно с последним номер добавлен.
Я действительно застрял в этом, и не знаю, с чего начать.
Любая помощь вообще была бы оценена, спасибо много!
Мой подход:
window.setTimeout
со всеми задержками. Дайте ему функцию, которая увеличивает текущее значение на единицу.Код:
var start = parseInt($("#inStart").val(), 10),
end = parseInt($("#inEnd").val(), 10),
duration = parseInt($("#inDuration").val(), 10),
difference = end - start,
current = start - 1,
step = duration * 1000 / difference,
delays = [],
index, amount,
increment = function () {
current += 1;
$("#outCurrent").text(current);
};
// calculate equal delays
for (index = 0; index <= difference; index++) {
delays.push(step * index);
}
// randomize delays, without changing the sum
for (index = 1; index < delays.length - 2; index++) {
amount = (Math.random() - 0.5) * step;
delays[index] -= amount;
delays[index+1] += amount;
}
// schedule the increment calls
for (index = 0; index < delays.length; index++) {
window.setTimeout(increment, delays[index]);
}
Вот демонстрационная скрипка, вы можете попробовать ее.