From f24784c383e16481748d91f7b176f0330d3a9d2f 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: Sun, 27 Jun 2021 15:07:24 +0300 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=B2=D0=BE=D0=B9=D1=81=D1=82=D0=B2?= =?UTF-8?q?=D0=B0=20=D1=84=D0=B8=D0=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 00130.объекты.js | 54 ++++++++++++++++++++++---------------- 01300.пример.json.js | 5 +++- 2 files changed, 35 insertions(+), 24 deletions(-) diff --git a/00130.объекты.js b/00130.объекты.js index 32cfc6a..7d9c9a6 100644 --- a/00130.объекты.js +++ b/00130.объекты.js @@ -4,12 +4,14 @@ y: 100, ширина: 40, высота: 20, - статика: true, + физика: { + isStatic: true, + }, }, задано: {}, тела: {}, элементы: {}, - свойстваТела: ["x", "y", "ширина", "высота", "статика"], + свойстваТела: ["x", "y", "ширина", "высота", "физика"], обновить: обновитьОбъекты, }; @@ -26,8 +28,14 @@ var имя = путь[1]; var свойство = путь[2]; - сохранитьЗаданноеЗначение(имя, свойство, значение); - пересоздатьТело(имя, свойство, значение); + if (!(имя in мир.объекты.задано)) + { + мир.объекты.задано[имя] = {}; + } + var свойствоПуть = путь.slice(2).join("."); + мир.объекты.задано[имя][свойствоПуть] = значение; + + пересоздатьТело(имя, свойство); обновитьЭлемент(имя, свойство, значение); обновитьВидЭлемента(путь, имя, свойство, значение); }); @@ -53,16 +61,11 @@ function обновитьОбъекты() } } -function сохранитьЗаданноеЗначение(имя, свойство, значение) -{ - if (!(имя in мир.объекты.задано)) - { - мир.объекты.задано[имя] = {}; - } - мир.объекты.задано[имя][свойство] = значение; -} -function пересоздатьТело(имя, свойство, значение) +// // // // + + +function пересоздатьТело(имя, свойство) { if (!мир.объекты.свойстваТела.includes(свойство)) { @@ -79,16 +82,22 @@ function пересоздатьТело(имя, свойство, значени var за = мир.объекты.задано[имя]; var ум = мир.объекты.умолчание; - var x = за["x"] ? за["x"] : ум["x"]; - var y = за["y"] ? за["y"] : ум["y"]; - var ширина = за["ширина"] ? за["ширина"] : ум["ширина"]; - var высота = за["высота"] ? за["высота"] : ум["высота"]; - var свойства = { - isStatic: ("статика" in за) ? за.статика : ум.статика, - inertia: Infinity, - }; + var x = за.x ? за.x : ум.x; + var y = за.y ? за.y : ум.y; + var ширина = за.ширина ? за.ширина : ум.ширина; + var высота = за.высота ? за.высота : ум.высота; + var физика = {}; + Object.assign(физика, ум.физика); + for (var путь in за) + { + if (путь.startsWith("физика")) + { + var свойство = путь.slice(7); + физика[свойство] = за[путь]; + } + } - var тело = Matter.Bodies.rectangle(x, y, ширина, высота, свойства); + var тело = Matter.Bodies.rectangle(x, y, ширина, высота, физика); Matter.Composite.add(мир.физика.движок.world, тело); мир.объекты.тела[имя] = тело; } @@ -136,5 +145,4 @@ function обновитьВидЭлемента(путь, имя, свойств var элемент = мир.объекты.элементы[имя]; var параметр = путь[3]; элемент.style.setProperty(параметр, значение); -console.debug(имя, свойство, параметр, значение); } diff --git a/01300.пример.json.js b/01300.пример.json.js index 5158d10..5cc1e51 100644 --- a/01300.пример.json.js +++ b/01300.пример.json.js @@ -24,7 +24,10 @@ y: 150, ширина: 60, высота: 60, - статика: false, + физика: { + isStatic: false, + inertia: Infinity, + }, вид: { background: "url(р/колобок/колобок_неподвижен.png) no-repeat scroll 50% 0% / contain", },