Я пытаюсь создать функцию, используя пользовательский таймер, который будет продвигать один кадр моей анимации. Я запускаю. У меня есть таймер, способный сделать паузу и возобновить на данный момент, но я не смог найти способ получить функцию шага. Моя задержка ожидания анимации установлена на уровне 25 мс.javascript setTimeout timer step function
Вот что я работаю с:
Delay = 25
//This function is a custom timer that tracks the start time of a timeout and calculates the remaining time
// in order to resume at the appropriate frame of animation.
function Timer(callback, delay) {
var timerId, start, remaining = delay;
this.pause = function() {
window.clearTimeout(timerId);
remaining -= new Date() - start;
animate = false;
};
this.resume = function() {
start = new Date();
window.clearTimeout(timerId);
timerId = window.setTimeout(callback, remaining);
animate = true;
};
this.resume();
}
Я признателен за любую помощь, что кто-то может дать мне, я все еще учусь и никогда не было хорошо с таймеры или события таймера.
ОБНОВЛЕНИЕ Мне удалось исправить свою проблему! Вот что я получил в итоге.
//This function is a custom timer that tracks the start time of a timeout and calculates the remaining time
// in order to resume at the appropriate frame of animation.
function Timer(callback, delay){
var timerId, start, remaining = delay;
this.pause = function(){
window.clearTimeout(timerId);
remaining -= new Date() - start;
animate = false;
};
this.resume = function(){
start = new Date();
window.clearTimeout(timerId);
timerId = window.setTimeout(callback, remaining);
animate = true;
};
this.step = function(){
timer.pause();
animate = false;
advanceAnimation(true);
};
this.resume();
}
Как это работает? Что пошло не так? Любые ошибки в консоли? – Teemu
Я, наконец, понял, что только манипулирую некоторой логикой анимации. Я смог достичь своего результата, сначала вызвав функцию паузы по таймеру, установив ложную переменную boolean в переменную false и вручную вызвав мою анимационную функцию рисования один раз вместо того, чтобы ее вызывал таймаут. – user3786596