ограниченные анимации

This commit is contained in:
2021-11-30 17:16:22 +03:00
parent 584b975aea
commit b5696a5adb

View File

@@ -32,9 +32,11 @@ function Анимация(элемент, параметры)
let кадровПоГоризонтали = Math.floor(ширинаДиапазона / ширинаКадра); let кадровПоГоризонтали = Math.floor(ширинаДиапазона / ширинаКадра);
let кадровПоВертикали = Math.floor(высотаДиапазона / высотаКадра); let кадровПоВертикали = Math.floor(высотаДиапазона / высотаКадра);
this.номерКадра = 0; this.номерВоспроизведения = 0;
this.колвоВоспроизведений = воспроизведений;
this.размерКадра = [к0, к1]; this.размерКадра = [к0, к1];
this.поГоризонтаи = кадровПоГоризонтали > кадровПоВертикали; this.поГоризонтаи = кадровПоГоризонтали > кадровПоВертикали;
this.номерКадра = 0;
this.колвоКадров = this.поГоризонтали ? кадровПоГоризонтали : кадровПоВертикали; this.колвоКадров = this.поГоризонтали ? кадровПоГоризонтали : кадровПоВертикали;
// Возможно, в будущем стоит заменить частные таймеры на один общий. // Возможно, в будущем стоит заменить частные таймеры на один общий.
// Вдруг в браузерах есть ограничение на количество таймеров от одной страницы. // Вдруг в браузерах есть ограничение на количество таймеров от одной страницы.
@@ -54,11 +56,19 @@ function Анимация(элемент, параметры)
this.номерКадра += 1; this.номерКадра += 1;
if (this.номерКадра >= this.колвоКадров) if (this.номерКадра >= this.колвоКадров)
{ {
this.номерВоспроизведения += 1;
this.номерКадра = 0; this.номерКадра = 0;
if (
this.колвоВоспроизведений > 0 &&
this.номерВоспроизведения >= this.колвоВоспроизведений
) {
this.остановить();
return;
}
} }
let x = this.поГоризонтали ? this.номерКадра * this.размерКадра[0] : 0; let x = this.поГоризонтали ? this.номерКадра * this.размерКадра[0] : 0;
let y = this.поГоризонтали ? 0 : this.номерКадра * this.размерКадра[1]; let y = this.поГоризонтали ? 0 : this.номерКадра * this.размерКадра[1];
элемент.style.backgroundPosition = `${x}px ${y}px`; элемент.style.backgroundPosition = `${x}px ${y}px`;
}; };