diff --git a/4.1/игра.html b/4.1/игра.html index 135c2ba..da16f3d 100644 --- a/4.1/игра.html +++ b/4.1/игра.html @@ -27,6 +27,7 @@ + diff --git a/4.1/игра/100.Изображения.js b/4.1/игра/100.Изображения.js index 9ce73a0..36ae720 100644 --- a/4.1/игра/100.Изображения.js +++ b/4.1/игра/100.Изображения.js @@ -1,4 +1,4 @@ -function Изображения(события, виды, корень) +function Изображения(события, виды, анимации, корень) { this.создать = function() { @@ -25,12 +25,67 @@ function Изображения(события, виды, корень) this.обработатьСобытие = function(событие) { - let префикс = "виды/"; - if (событие.startsWith(префикс)) + let в = "виды/"; + let а = "анимации/"; + if (событие.startsWith(в)) { - let вид = событие.substring(префикс.length); + let вид = событие.substring(в.length); this.обновитьЭлементыВида(вид); } + else if (событие.startsWith(а)) + { + let анимация = событие.substring(а.length); + this.обновитьЭлементыАнимации(анимация); + } + }; + + this.обновитьЭлементыАнимации = function(анимация) + { + for (let имя in this.задано) + { + let за = this.задано[имя]; + let зан = за["анимация"]; + if (зан && зан == анимация) + { + this.обновитьВидАнимацию(имя, за["вид"], за["анимация"]); + } + } + }; + + this.обновитьЭлементыВида = function(вид) + { + for (let имя in this.задано) + { + let за = this.задано[имя]; + let заданныйВид = за["вид"]; + if (заданныйВид && заданныйВид == вид) + { + this.обновитьВидАнимацию(имя, за["вид"], за["анимация"]); + } + } + }; + + // Без вида и анимации. + + this.обновитьПозициюРазмерЭлемента = function(имя, эл) + { + let пр = this.пр(имя); + эл.style.left = `${пр[0]}px`; + эл.style.top = `${пр[1]}px`; + эл.style.width = `${пр[2]}px`; + эл.style.height = `${пр[3]}px`; + }; + + this.пр = function(имя) + { + let за = this.задано[имя]; + let пр = this.умолчание.пр; + return [ + за["пр.0"] ? за["пр.0"] : пр[0], + за["пр.1"] ? за["пр.1"] : пр[1], + за["пр.2"] ? за["пр.2"] : пр[2], + за["пр.3"] ? за["пр.3"] : пр[3], + ]; }; this.создатьИлиПолучитьЭлемент = function(имя) @@ -54,25 +109,7 @@ function Изображения(события, виды, корень) return эл; }; - this.обновитьВид = function(имя, вид) - { - var эл = this.создатьИлиПолучитьЭлемент(имя); - let за = виды.задано[вид]; - for (let параметр in за) - { - эл.style.setProperty(параметр, за[параметр]); - } - this.обновитьУгол(имя); - }; - - this.обновитьПозициюРазмерЭлемента = function(имя, эл) - { - let пр = this.пр(имя); - эл.style.left = `${пр[0]}px`; - эл.style.top = `${пр[1]}px`; - эл.style.width = `${пр[2]}px`; - эл.style.height = `${пр[3]}px`; - }; + // Вид и анимация. this.обновитьУгол = function(имя) { @@ -96,6 +133,29 @@ function Изображения(события, виды, корень) эл.style.transform = transform; }; + + this.обновитьВидАнимацию = function(имя, вид, анимация) + { + var эл = this.создатьИлиПолучитьЭлемент(имя); + + if (вид) + { + let за = виды.задано[вид]; + for (let параметр in за) + { + эл.style.setProperty(параметр, за[параметр]); + } + } + + if (анимация) + { + let за = анимации.задано[анимация]; + // НАДО. + } + + this.обновитьУгол(имя); + }; + this.обновитьЭлемент = function(имя, свойство, значение) { if (!this.задано[имя]) @@ -112,36 +172,13 @@ function Изображения(события, виды, корень) } else if ( (свойство == "угол") || - (свойство == "вид") + (свойство == "вид") || + (свойство == "анимация") ) { - this.обновитьВид(имя, за["вид"]); - } - }; - - this.обновитьЭлементыВида = function(вид) - { - for (let имя in this.задано) - { - let заданныйВид = this.задано[имя]["вид"]; - if (заданныйВид && заданныйВид == вид) - { - this.обновитьВид(имя, вид); - } + this.обновитьВидАнимацию(имя, за["вид"], за["анимация"]); } }; - this.пр = function(имя) - { - let за = this.задано[имя]; - let пр = this.умолчание.пр; - return [ - за["пр.0"] ? за["пр.0"] : пр[0], - за["пр.1"] ? за["пр.1"] : пр[1], - за["пр.2"] ? за["пр.2"] : пр[2], - за["пр.3"] ? за["пр.3"] : пр[3], - ]; - }; - // Конструктор. this.создать(); } diff --git a/4.1/игра/700.Игра.js b/4.1/игра/700.Игра.js index 9638844..8fe6095 100644 --- a/4.1/игра/700.Игра.js +++ b/4.1/игра/700.Игра.js @@ -14,7 +14,7 @@ function Игра() мир.состояние.обработчик = (к, п, з) => { this.обработатьКлюч(к, п, з) }; мир.виды = new Виды(мир.события); мир.анимации = new Анимации(мир.события); - мир.изображения = new Изображения(мир.события, мир.виды, корень), + мир.изображения = new Изображения(мир.события, мир.виды, мир.анимации, корень), мир.физика = new Физика(мир.события); мир.тела = new Тела(мир.события, мир.физика, мир.физдвижок.world); мир.слежение = new Слежение(мир.состояние, мир.изображения, мир.тела);