From 048c753531276f90b8840c4d56a2ffc9cf186d84 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: Wed, 25 May 2022 16:46:15 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20=D0=BF=D0=B5=D1=80=D0=B2=D1=8B?= =?UTF-8?q?=D0=B9=20=D0=B4=D0=B8=D0=B0=D0=BF=D0=B0=D0=B7=D0=BE=D0=BD=20?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=20=D0=BF=D0=BE=D0=B2=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B5=D0=BD=D0=B8=D0=B5=D0=BC=20=D0=B2=D1=82=D0=BE=D1=80?= =?UTF-8?q?=D0=BE=D0=B3=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 6.0/игра/075.Анимация.js | 41 ++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/6.0/игра/075.Анимация.js b/6.0/игра/075.Анимация.js index e56a15f..5591114 100644 --- a/6.0/игра/075.Анимация.js +++ b/6.0/игра/075.Анимация.js @@ -21,7 +21,8 @@ function Анимация(элемент, параметры) { return; } - this.подготовитьДиапазон(0); + this.номерДиапазона = 0; + this.подготовитьДиапазон(); this.номерОтрисовки = null; this.идёт = true; }; @@ -40,22 +41,40 @@ function Анимация(элемент, параметры) this.переключитьКадр = function() { this.номерКадра += 1; - if (this.номерКадра >= this.колвоКадров) + // Кадры ещё есть. + if (this.номерКадра < this.колвоКадров) { - this.номерВоспроизведения += 1; + return true; + } + // Кадры диапазона завершились. + // Переключаем на следующий диапазон, если: + // 1. сейчас первый (начальный) диапазон + // 2. всего диапазонов хотя бы два + if ( + this.номерДиапазона == 0 && + this.диапазоны.length > 1 + ) { + this.номерДиапазона++; + this.подготовитьДиапазон(); this.номерКадра = 0; - if ( - this.воспроизведений > 0 && - this.номерВоспроизведения >= this.воспроизведений - ) { - return false; - } + return true; + } + // Пробуем использовать следующее воспроизведение. + this.номерВоспроизведения += 1; + this.номерКадра = 0; + // Воспроизведений не осталось. + if ( + this.воспроизведений > 0 && + this.номерВоспроизведения >= this.воспроизведений + ) { + return false; } return true; }; - this.подготовитьДиапазон = function(н) + this.подготовитьДиапазон = function() { + let н = this.номерДиапазона; let ширинаДиапазона = Math.abs(this.диапазоны[н][2] - this.диапазоны[н][0]); let высотаДиапазона = Math.abs(this.диапазоны[н][3] - this.диапазоны[н][1]); let ширинаКадра = this.кадр[0]; @@ -124,8 +143,8 @@ function Анимация(элемент, параметры) return false; } - this.диапазоны = диапазоны; this.воспроизведений = воспроизведений; + this.диапазоны = диапазоны; this.кадр = [к0, к1]; this.скорость = скорость;