You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.6KB

  1. function Объекты(события, изображения, тела, слежение)
  2. {
  3. this.создать = function()
  4. {
  5. this.умолчание = {
  6. пр: [0, 0, 40, 20],
  7. };
  8. this.задано = {};
  9. события.подписать(this);
  10. };
  11. this.обработатьКлюч = function(ключ, путь, значение)
  12. {
  13. if (путь[0] != "объекты")
  14. {
  15. return;
  16. }
  17. var имя = путь[1];
  18. var свойство = путь.slice(2).join(".");
  19. if (!this.задано[имя])
  20. {
  21. this.задано[имя] = {};
  22. }
  23. this.задано[имя][свойство] = значение;
  24. this.обновитьОбъект(имя);
  25. };
  26. this.обновитьОбъект = function(имя)
  27. {
  28. /*
  29. var тело = тела.тела[за.тело];
  30. if (!тело)
  31. {
  32. return;
  33. }
  34. var элемент = изображения.элементы[за.изображение];
  35. var ум = this.умолчание;
  36. // Параметры.
  37. var скорость = за.скорость ? за.скорость : ум.скорость;
  38. var смещениеX = за["смещение.0"] ? за["смещение.0"] : ум.смещение[0];
  39. var смещениеY = за["смещение.1"] ? за["смещение.1"] : ум.смещение[1];
  40. var предел = за.предел ? за.предел : ум.предел;
  41. // Текущая позиция.
  42. var x0 = 0;
  43. if (элемент.dataset.слежениеX)
  44. {
  45. x0 = элемент.dataset.слежениеX;
  46. }
  47. var y0 = 0;
  48. if (элемент.dataset.слежениеY)
  49. {
  50. y0 = элемент.dataset.слежениеY;
  51. }
  52. // Целевая позиция.
  53. var x1 = тело.position.x + смещениеX;
  54. var y1 = тело.position.y + смещениеY;
  55. // Radians -> Degrees.
  56. var угол = тело.angle * 180 / Math.PI;
  57. // Устанавливаемая плавно позиция.
  58. var x = this.lerp(x0, x1, скорость, предел);
  59. var y = this.lerp(y0, y1, скорость, предел);
  60. элемент.dataset.слежениеX = x;
  61. элемент.dataset.слежениеY = y;
  62. изображения.обновитьРасположение(за.изображение, x, y, угол);
  63. */
  64. };
  65. // Конструктор.
  66. this.создать();
  67. };