ограниченные анимации
This commit is contained in:
@@ -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`;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user