Browse Source

Анимация

tags/4.1
parent
commit
e8a18ab9ee
3 changed files with 70 additions and 0 deletions
  1. +1
    -0
      4.1/игра.html
  2. +68
    -0
      4.1/игра/075.Анимация.js
  3. +1
    -0
      4.1/игра/080.Анимации.js

+ 1
- 0
4.1/игра.html View File

@@ -27,6 +27,7 @@
<script src="общее/200.функции.js"></script>
<script src="игра/050.Заголовок.js"></script>
<script src="игра/070.Виды.js"></script>
<script src="игра/075.Анимация.js"></script>
<script src="игра/080.Анимации.js"></script>
<script src="игра/100.Изображения.js"></script>
<script src="игра/120.Физика.js"></script>


+ 68
- 0
4.1/игра/075.Анимация.js View File

@@ -0,0 +1,68 @@
//let параметры = анимации.задано[анимация];
function Анимация(элемент, параметры)
{
this.запустить = function()
{
let п = параметры;
let воспроизведений = Number(п["воспроизведений"]);
let скорость = Number(п["скорость"]);
let к0 = Number(п["кадр.0"]);
let к1 = Number(п["кадр.1"]);
let д0 = Number(п["диапазон.0"]);
let д1 = Number(п["диапазон.1"]);
let д2 = Number(п["диапазон.2"]);
let д3 = Number(п["диапазон.3"]);

if (
воспроизведений == null ||
скорость == null ||
к0 == null ||
к1 == null ||
д0 == null ||
д1 == null ||
д2 == null ||
д3 == null
) {
return;
}

let ширинаДиапазона = Math.abs(д2 - д0);
let высотаДиапазона = Math.abs(д3 - д1);
let ширинаКадра = Math.abs(к0);
let высотаКадра = Math.abs(к1);
let кадровПоГоризонтали = Math.floor(ширинаДиапазона / ширинаКадра);
let кадровПоВертикали = Math.floor(высотаДиапазона / высотаКадра);

this.номерКадра = 0;
this.размерКадра = [к0, к1];
this.поГоризонтаи = кадровПоГоризонтали > кадровПоВертикали;
this.колвоКадров = this.поГоризонтали ? кадровПоГоризонтали : кадровПоВертикали;
// Возможно, в будущем стоит заменить частные таймеры на один общий.
// Вдруг в браузерах есть ограничение на количество таймеров от одной страницы.
this.таймер = setInterval(() => { this.анимировать(); }, скорость);
};

this.остановить = function()
{
if (this.таймер)
{
clearInterval(this.таймер);
}
};

this.анимировать = function()
{
this.номерКадра += 1;
if (this.номерКадра >= this.колвоКадров)
{
this.номерКадра = 0;
}
let x = this.поГоризонтали ? this.номерКадра * this.размерКадра[0] : 0;
let y = this.поГоризонтали ? 0 : this.номерКадра * this.размерКадра[1];

элемент.style.backgroundPosition = `${x}px ${y}px`;
};

// Конструктор.
this.запустить();
}

+ 1
- 0
4.1/игра/080.Анимации.js View File

@@ -3,6 +3,7 @@ function Анимации(события)
this.создать = function()
{
this.задано = {};
this.анимации = {};
};

this.обработатьКлюч = function(ключ, путь, значение)


Loading…
Cancel
Save