Проверить Matter.js
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

68 lignes
2.4KB

  1. мир.платформы = {
  2. умолчание: {
  3. x: 100,
  4. y: 100,
  5. ширина: 40,
  6. высота: 20,
  7. цвет: "#ff0000",
  8. },
  9. задано: {},
  10. тела: {},
  11. div: {},
  12. };
  13. мир.ключники.push(function(ключ, путь, значение){
  14. if (!ключ.startsWith("платформы"))
  15. {
  16. return;
  17. }
  18. var имя = путь[1];
  19. var свойство = путь[2];
  20. // Создать div.
  21. if (!(имя in мир.платформы.div))
  22. {
  23. var элемент = document.createElement("div");
  24. элемент.style.position = "absolute";
  25. элемент.style.display = "block";
  26. элемент.style.backgroundColor = "#ff0000";
  27. элемент.style.width = "100px";
  28. элемент.style.height = "100px";
  29. document.body.appendChild(элемент);
  30. мир.платформы.div[имя] = элемент;
  31. }
  32. // Сохранить заданные значения.
  33. if (!(имя in мир.платформы.задано))
  34. {
  35. мир.платформы.задано[имя] = {};
  36. }
  37. мир.платформы.задано[имя][свойство] = значение;
  38. console.debug("задано", мир.платформы.задано[имя]);
  39. // Удалить физическое тело.
  40. if (имя in мир.платформы.тела)
  41. {
  42. var тело = мир.платформы.тела[имя];
  43. Matter.Composite.remove(мир.физика.движок.world, тело);
  44. }
  45. // Пересоздать физическое тело.
  46. var задано = мир.платформы.задано[имя];
  47. var умолчание = мир.платформы.умолчание;
  48. var тело = Matter.Bodies.rectangle(
  49. задано["x"] ? задано["x"] : умолчание["x"],
  50. задано["y"] ? задано["y"] : умолчание["y"],
  51. задано["ширина"] ? задано["ширина"] : умолчание["ширина"],
  52. задано["высота"] ? задано["высота"] : умолчание["высота"],
  53. {
  54. isStatic: true,
  55. }
  56. );
  57. console.debug("создать тело", тело);
  58. Matter.Composite.add(мир.физика.движок.world, тело);
  59. мир.платформы.тела[имя] = тело;
  60. });