diff --git a/00120.физика.js b/00120.физика.js index 3ab4556..c01b0ce 100644 --- a/00120.физика.js +++ b/00120.физика.js @@ -2,6 +2,9 @@ движок: null, настройки: { enableSleeping: true, + gravity: { + y: 2, + }, }, создать: function() { мир.физика.движок = Matter.Engine.create(мир.физика.настройки); diff --git a/00125.изображения.js b/00125.изображения.js new file mode 100644 index 0000000..dd7e6ef --- /dev/null +++ b/00125.изображения.js @@ -0,0 +1,81 @@ +мир.изображения = { + умолчание: { + x: 0, + y: 0, + ширина: 100, + высота: 100, + }, + задано: {}, + элементы: {}, +}; + + +// // // // + + +мир.ключники.push(function(ключ, путь, значение){ + if (!ключ.startsWith("изображения")) + { + return; + } + + var имя = путь[1]; + + if (!(имя in мир.изображения.задано)) + { + мир.изображения.задано[имя] = {}; + } + + //var свойство = путь.slice(2).join("."); + var свойство = путь[2]; + мир.изображения.задано[имя][свойство] = значение; + обновитьИзображение(путь, имя, свойство, значение); +}); + + +// // // // + + +function обновитьИзображение(путь, имя, свойство, значение) +{ + var за = мир.изображения.задано[имя]; + var ум = мир.изображения.умолчание; + var эл = мир.изображения.элементы[имя]; + + if (!эл) + { + эл = document.createElement("div"); + эл.id = `изображения-${имя}`; + эл.style.position = "absolute"; + эл.style.display = "block"; + document.body.appendChild(эл); + мир.изображения.элементы[имя] = эл; + // Свойства по умолчанию. + эл.style.left = `${ум.x}px`; + эл.style.top = `${ум.y}px`; + эл.style.width = `${ум.ширина}px`; + эл.style.height = `${ум.высота}px`; + } + + if (свойство == "ширина") + { + эл.style.width = `${за.ширина}px`; + } + else if (свойство == "высота") + { + эл.style.height = `${за.высота}px`; + } + else if (свойство == "x") + { + эл.style.left = `${за.x}px`; + } + else if (свойство == "y") + { + эл.style.top = `${за.y}px`; + } + else if (свойство == "вид") + { + var параметр = путь[3]; + эл.style.setProperty(параметр, значение); + } +} diff --git a/01300.пример.json.js b/01300.пример.json.js index efef96a..b9dffaa 100644 --- a/01300.пример.json.js +++ b/01300.пример.json.js @@ -1,5 +1,14 @@ мир.разобрать({ заголовок: "К 0.10.0", + изображения: { + дом: { + ширина: 2000, + высота: 600, + вид: { + background: "url(р/сцены/изба.jpg)", + }, + }, + }, объекты: { пол: { x: 1000, @@ -22,28 +31,7 @@ }, игрок: { объект: "колобок", - скорость: [3, 7], + скорость: [4, 12], клавиши: ["ArrowLeft", "ArrowRight", "ArrowUp"], }, }); - -function переместитьПерсонажа(объект) -{ - var вверх = (мир.ввод.клавиши["ArrowUp"] == true); - var скоростьY = вверх ? -10 : 0; - var влево = (мир.ввод.клавиши["ArrowLeft"] == true); - var вправо = (мир.ввод.клавиши["ArrowRight"] == true); - var скоростьX = 0; - if (влево) - { - скоростьX = -2; - } - else if (вправо) - { - скоростьX = 2; - } - var тело = мир.объекты.тела[объект]; - Matter.Sleeping.set(тело, false); - Matter.Body.setVelocity(тело, { x: скоростьX, y: скоростьY }); -//console.debug("надо переместитьПерсонажа. клавиши", мир.ввод.клавиши); -} diff --git a/index.html b/index.html index cd8735b..01524a4 100644 --- a/index.html +++ b/index.html @@ -21,6 +21,7 @@ + diff --git a/р/сцены/изба.jpg b/р/сцены/изба.jpg new file mode 100644 index 0000000..0a5ec04 Binary files /dev/null and b/р/сцены/изба.jpg differ diff --git a/р/сцены/изба.xcf b/р/сцены/изба.xcf new file mode 100644 index 0000000..c51c8c7 Binary files /dev/null and b/р/сцены/изба.xcf differ diff --git a/р/сцены/подпол.jpg b/р/сцены/подпол.jpg new file mode 100644 index 0000000..738c88f Binary files /dev/null and b/р/сцены/подпол.jpg differ diff --git a/р/сцены/подпол.xcf b/р/сцены/подпол.xcf new file mode 100644 index 0000000..aa85902 Binary files /dev/null and b/р/сцены/подпол.xcf differ