From 268bca5ba44f22498b62b410e6a4aa25770b2592 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB=20=D0=9A=D0=B0=D0=BF?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=D0=BA=D0=BE?= Date: Tue, 30 Nov 2021 16:59:54 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=BC=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=B1=D0=B5=D1=81=D0=BA=D0=BE=D0=BD=D0=B5=D1=87=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 4.1/игра/080.Анимации.js | 11 ++++++ 4.1/игра/100.Изображения.js | 44 +--------------------- 2 files changed, 12 insertions(+), 43 deletions(-) diff --git a/4.1/игра/080.Анимации.js b/4.1/игра/080.Анимации.js index 18826f9..1a57aea 100644 --- a/4.1/игра/080.Анимации.js +++ b/4.1/игра/080.Анимации.js @@ -6,6 +6,17 @@ function Анимации(события) this.анимации = {}; }; + this.запустить = function(имя, элемент) + { + // Останавливаем прошлый экземпляр этой анимации. + if (имя in this.анимации) + { + this.анимации[имя].остановить(); + delete this.анимации[имя]; + } + this.анимации[имя] = new Анимация(элемент, this.задано[имя]); + } + this.обработатьКлюч = function(ключ, путь, значение) { if (путь[0] != "анимации") diff --git a/4.1/игра/100.Изображения.js b/4.1/игра/100.Изображения.js index 19ef506..c32ab89 100644 --- a/4.1/игра/100.Изображения.js +++ b/4.1/игра/100.Изображения.js @@ -9,9 +9,6 @@ function Изображения(события, виды, анимации, ко this.задано = {}; this.элементы = {}; события.подписать(this); - - this._номер = 0; - this._анимация = null; }; // Ключи и события. @@ -152,33 +149,7 @@ function Изображения(события, виды, анимации, ко if (анимация) { - let за = анимации.задано[анимация]; - let в = Number(за["воспроизведений"]); - let к0 = Number(за["кадр.0"]); - let к1 = Number(за["кадр.1"]); - let с = Number(за["скорость"]); - let д0 = Number(за["диапазон.0"]); - let д1 = Number(за["диапазон.1"]); - let д2 = Number(за["диапазон.2"]); - let д3 = Number(за["диапазон.3"]); - - if (в != null && к0 != null && к1 != null && с != null && д0 != null && д1 != null && д2 != null && д3 != null) - { - let кадр = [к0, к1]; - let диапазон = [д0, д1, д2, д3]; - /**/console.debug("ИГР Изображения.обновитьВА", в, кадр, с, диапазон); - this._кадр = кадр; - this._диапазон = диапазон; - let ширинаДиапазона = Math.abs(д2 - д0); - let высотаДиапазона = Math.abs(д3 - д1); - let ширинаКадра = Math.abs(к0); - let высотаКадра = Math.abs(к1); - let кадровX = Math.floor(ширинаДиапазона / ширинаКадра); - let кадровY = Math.floor(высотаДиапазона / высотаКадра); - this._кадрыX = кадровX > кадровY; - this._кадров = this._кадрыX ? кадровX : кадровY; - this.анимация = setInterval(() => { this._анимировать(эл); }, с); - } + анимации.запустить(анимация, эл); } this.обновитьУгол(имя); @@ -207,19 +178,6 @@ function Изображения(события, виды, анимации, ко } }; - this._анимировать = function(эл) - { - this._номер += 1; - if (this._номер >= this._кадров) - { - this._номер = 0; - } - let x = this._кадрыX ? this._номер * this._кадр[0] : 0; - let y = this._кадрыX ? 0 : this._номер * this._кадр[1]; - /**/console.log("ИГР Изображения._анимировать x/y", x, y); - эл.style.backgroundPosition = `${x}px ${y}px`; - }; - // Конструктор. this.создать(); }