|
@@ -1,5 +1,28 @@ |
|
|
function Анимация(элемент, параметры) |
|
|
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.запустить = function() |
|
|
{ |
|
|
{ |
|
|
this.идёт = false; |
|
|
this.идёт = false; |
|
@@ -9,20 +32,14 @@ function Анимация(элемент, параметры) |
|
|
let скорость = Number(п["скорость"]); |
|
|
let скорость = Number(п["скорость"]); |
|
|
let к0 = Number(п["кадр.0"]); |
|
|
let к0 = Number(п["кадр.0"]); |
|
|
let к1 = Number(п["кадр.1"]); |
|
|
let к1 = Number(п["кадр.1"]); |
|
|
let д0 = Number(п["диапазон.0"]); |
|
|
|
|
|
let д1 = Number(п["диапазон.1"]); |
|
|
|
|
|
let д2 = Number(п["диапазон.2"]); |
|
|
|
|
|
let д3 = Number(п["диапазон.3"]); |
|
|
|
|
|
|
|
|
let диапазоны = this.разобратьДиапазоны(); |
|
|
|
|
|
|
|
|
if ( |
|
|
if ( |
|
|
воспроизведений == null || |
|
|
воспроизведений == null || |
|
|
скорость == null || |
|
|
скорость == null || |
|
|
к0 == null || |
|
|
к0 == null || |
|
|
к1 == null || |
|
|
к1 == null || |
|
|
д0 == null || |
|
|
|
|
|
д1 == null || |
|
|
|
|
|
д2 == null || |
|
|
|
|
|
д3 == null |
|
|
|
|
|
|
|
|
диапазоны == null |
|
|
) { |
|
|
) { |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
@@ -34,6 +51,7 @@ function Анимация(элемент, параметры) |
|
|
let кадровПоГоризонтали = Math.floor(ширинаДиапазона / ширинаКадра); |
|
|
let кадровПоГоризонтали = Math.floor(ширинаДиапазона / ширинаКадра); |
|
|
let кадровПоВертикали = Math.floor(высотаДиапазона / высотаКадра); |
|
|
let кадровПоВертикали = Math.floor(высотаДиапазона / высотаКадра); |
|
|
|
|
|
|
|
|
|
|
|
this.диапазоны = диапазоны; |
|
|
this.скорость = скорость; |
|
|
this.скорость = скорость; |
|
|
this.номерВоспроизведения = 0; |
|
|
this.номерВоспроизведения = 0; |
|
|
this.колвоВоспроизведений = воспроизведений; |
|
|
this.колвоВоспроизведений = воспроизведений; |
|
@@ -57,27 +75,58 @@ function Анимация(элемент, параметры) |
|
|
this.номерИтерации = итерация; |
|
|
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; |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
// Конструктор. |
|
|
// Конструктор. |
|
|