Browse Source

сломано. ввести разбор диапазонов

master
parent
commit
11fae0b24e
1 changed files with 73 additions and 24 deletions
  1. +73
    -24
      6.0/игра/075.Анимация.js

+ 73
- 24
6.0/игра/075.Анимация.js View File

@@ -1,5 +1,28 @@
function Анимация(элемент, параметры)
{
this.анимировать = function()
{
this.номерКадра += 1;
if (this.номерКадра >= this.колвоКадров)
{
this.номерВоспроизведения += 1;
this.номерКадра = 0;
if (
this.колвоВоспроизведений > 0 &&
this.номерВоспроизведения >= this.колвоВоспроизведений
) {
this.идёт = false;
return;
}
}

let x0 = this.началоДиапазона[0];
let y0 = this.началоДиапазона[1];
let x = this.поГоризонтали ? x0 + this.номерКадра * this.размерКадра[0] : x0;
let y = this.поГоризонтали ? y0 : y0 + this.номерКадра * this.размерКадра[1];
элемент.style.backgroundPosition = `${x}px -${y}px`;
};

this.запустить = function()
{
this.идёт = false;
@@ -9,20 +32,14 @@ function Анимация(элемент, параметры)
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"]);
let диапазоны = this.разобратьДиапазоны();

if (
воспроизведений == null ||
скорость == null ||
к0 == null ||
к1 == null ||
д0 == null ||
д1 == null ||
д2 == null ||
д3 == null
диапазоны == null
) {
return;
}
@@ -34,6 +51,7 @@ function Анимация(элемент, параметры)
let кадровПоГоризонтали = Math.floor(ширинаДиапазона / ширинаКадра);
let кадровПоВертикали = Math.floor(высотаДиапазона / высотаКадра);

this.диапазоны = диапазоны;
this.скорость = скорость;
this.номерВоспроизведения = 0;
this.колвоВоспроизведений = воспроизведений;
@@ -57,27 +75,58 @@ function Анимация(элемент, параметры)
this.номерИтерации = итерация;
};

this.анимировать = function()
this.разобратьДиапазон = function(номер)
{
this.номерКадра += 1;
if (this.номерКадра >= this.колвоКадров)
var список = [];
for (var н = 0; н < 4; ++н)
{
this.номерВоспроизведения += 1;
this.номерКадра = 0;
if (
this.колвоВоспроизведений > 0 &&
this.номерВоспроизведения >= this.колвоВоспроизведений
) {
this.идёт = false;
return;
let ключ = `диапазон.${номер}.${н}`;
let значение = Number(параметры[ключ]);
if (значение)
{
список.push(значение);
}
}
if (список.length == 4)
{
return список;
}
return null;
};

let x0 = this.началоДиапазона[0];
let y0 = this.началоДиапазона[1];
let x = this.поГоризонтали ? x0 + this.номерКадра * this.размерКадра[0] : x0;
let y = this.поГоризонтали ? y0 : y0 + this.номерКадра * this.размерКадра[1];
элемент.style.backgroundPosition = `${x}px -${y}px`;
this.разобратьДиапазоны = function()
{
let ключи = Object.keys(параметры).sort();
let префикс = "диапазоны";
var значения = [];
for (var номер in ключи)
{
let ключ = ключи[номер];
if (ключ.startsWith(префикс))
{
let значение = Number(параметры[ключ]);
if (!isNaN(значение))
{
значения.push(значение);
}
}
}
if (значения.length % 4 == 0)
{
var диапазоны = [];
let колво = значения.length / 4;
for (var д = 0; д < колво; ++д)
{
var диапазон = [];
for (var н = 0; н < 4; ++н)
{
диапазон.push(значения[д * 4 + н]);
}
диапазоны.push(диапазон);
}
return диапазоны;
}
return null;
};

// Конструктор.


Loading…
Cancel
Save