From 1024f172a9194742fc2888051b1bfde0c0ab76a5 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, 7 Sep 2021 14:49:15 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D1=8F?= =?UTF-8?q?=D1=82=D1=8C=20=D0=B7=D0=B0=D0=B3=D0=BE=D0=BB=D0=BE=D0=B2=D0=BE?= =?UTF-8?q?=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3.0/проигрыватель/700.Игра.js | 15 ++++++++++++--- 3.0/проигрыватель/700.игра.js | 15 ++++++++++++--- 3.0/редактор/100.Редактор.js | 17 +++++++++++++---- 3.0/редактор/100.редактор.js | 17 +++++++++++++---- 3.0/редактор/index.html | 4 ++-- 5 files changed, 52 insertions(+), 16 deletions(-) diff --git a/3.0/проигрыватель/700.Игра.js b/3.0/проигрыватель/700.Игра.js index 1023c85..149ef2a 100644 --- a/3.0/проигрыватель/700.Игра.js +++ b/3.0/проигрыватель/700.Игра.js @@ -4,12 +4,13 @@ function Игра() { this.события = new События(); this.пз = new ПараметрыЗапуска(); - this.исполнитьКод(); + var z64 = this.пз.параметры["z64"]; + this.исполнитьКод(z64); + this.отслеживатьОбновленияКода(); }; - this.исполнитьКод = function() + this.исполнитьКод = function(z64) { - var z64 = this.пз.параметры["z64"]; if (z64) { var код = изZ64(z64); @@ -17,6 +18,14 @@ function Игра() } }; + this.отслеживатьОбновленияКода = function() + { + var тут = this; + window.addEventListener("message", function(событие) { + тут.исполнитьКод(событие.data); + }); + }; + // Конструктор. this.создать(); } diff --git a/3.0/проигрыватель/700.игра.js b/3.0/проигрыватель/700.игра.js index 1023c85..149ef2a 100644 --- a/3.0/проигрыватель/700.игра.js +++ b/3.0/проигрыватель/700.игра.js @@ -4,12 +4,13 @@ function Игра() { this.события = new События(); this.пз = new ПараметрыЗапуска(); - this.исполнитьКод(); + var z64 = this.пз.параметры["z64"]; + this.исполнитьКод(z64); + this.отслеживатьОбновленияКода(); }; - this.исполнитьКод = function() + this.исполнитьКод = function(z64) { - var z64 = this.пз.параметры["z64"]; if (z64) { var код = изZ64(z64); @@ -17,6 +18,14 @@ function Игра() } }; + this.отслеживатьОбновленияКода = function() + { + var тут = this; + window.addEventListener("message", function(событие) { + тут.исполнитьКод(событие.data); + }); + }; + // Конструктор. this.создать(); } diff --git a/3.0/редактор/100.Редактор.js b/3.0/редактор/100.Редактор.js index 8be1596..752affd 100644 --- a/3.0/редактор/100.Редактор.js +++ b/3.0/редактор/100.Редактор.js @@ -1,4 +1,4 @@ -function Редактор(события, имяРедактора, имяВоспроизведения) +function Редактор(события, имяРедактора) { this.создать = function() { @@ -25,10 +25,19 @@ function Редактор(события, имяРедактора, имяВос var z64 = вZ64(содержимое); var путь = window.location.pathname + "?z64=" + z64; history.pushState(null, "", путь); + document.title = `M-3.0 ${z64.length}:${z64.slice(z64.length - 5)}`; - var воспроизведение = document.getElementById("воспроизведение"); - var адрес = "../проигрыватель/index.html?z64=" + z64; - воспроизведение.src = адрес; + // Исполняем явно код лишь первый раз. + var проигрыватель = document.getElementById("проигрыватель"); + if (!проигрыватель.src) + { + проигрыватель.src = "../проигрыватель/index.html?z64=" + z64; + } + // После запуска уведомляем iframe о новом коде без перезагрузки. + else + { + window.frames.проигрыватель.postMessage(z64, "*"); + } }; this.обработатьСобытие = function(событие) diff --git a/3.0/редактор/100.редактор.js b/3.0/редактор/100.редактор.js index 8be1596..752affd 100644 --- a/3.0/редактор/100.редактор.js +++ b/3.0/редактор/100.редактор.js @@ -1,4 +1,4 @@ -function Редактор(события, имяРедактора, имяВоспроизведения) +function Редактор(события, имяРедактора) { this.создать = function() { @@ -25,10 +25,19 @@ function Редактор(события, имяРедактора, имяВос var z64 = вZ64(содержимое); var путь = window.location.pathname + "?z64=" + z64; history.pushState(null, "", путь); + document.title = `M-3.0 ${z64.length}:${z64.slice(z64.length - 5)}`; - var воспроизведение = document.getElementById("воспроизведение"); - var адрес = "../проигрыватель/index.html?z64=" + z64; - воспроизведение.src = адрес; + // Исполняем явно код лишь первый раз. + var проигрыватель = document.getElementById("проигрыватель"); + if (!проигрыватель.src) + { + проигрыватель.src = "../проигрыватель/index.html?z64=" + z64; + } + // После запуска уведомляем iframe о новом коде без перезагрузки. + else + { + window.frames.проигрыватель.postMessage(z64, "*"); + } }; this.обработатьСобытие = function(событие) diff --git a/3.0/редактор/index.html b/3.0/редактор/index.html index 1ed6cf2..5ec8a47 100644 --- a/3.0/редактор/index.html +++ b/3.0/редактор/index.html @@ -33,7 +33,7 @@ flex-direction: column; border: 1px dashed gainsboro; } - #воспроизведение + #проигрыватель { position: absolute; right: 0; @@ -55,7 +55,7 @@   - +