Колобок на Phaser
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.

63 lines
2.4KB

  1. function создатьУзлыСценыПоСтруктуре(структура)
  2. {
  3. for (var имя in структура)
  4. {
  5. var узел = null;
  6. var описание = структура[имя];
  7. var свойства = {};
  8. Object.assign(свойства, описание);
  9. delete свойства["тип"];
  10. delete свойства["x"];
  11. delete свойства["y"];
  12. delete свойства["texture"];
  13. delete свойства["группы"];
  14. delete свойства["после"];
  15. // Создаём узел.
  16. if (описание.тип == "изображение")
  17. {
  18. узел = описание.родитель.add.image(описание.x, описание.y, описание.texture);
  19. }
  20. else if (описание.тип == "платформа")
  21. {
  22. узел = описание.родитель.create(описание.x, описание.y, описание.texture);
  23. }
  24. else if (описание.тип == "спрайт")
  25. {
  26. узел = описание.родитель.add.sprite(описание.x, описание.y, описание.texture);
  27. }
  28. // Помещаем в группы.
  29. for (var номер in описание.группы)
  30. {
  31. var группа = описание.группы[номер];
  32. группа.add(узел);
  33. }
  34. // Задаём имя.
  35. узел.name = имя;
  36. // Выставляем оставшиеся невыставленными свойства.
  37. for (var свойство in свойства)
  38. {
  39. var значение = свойства[свойство];
  40. узел[свойство] = значение;
  41. }
  42. // Необходимо после смены originX/Y.
  43. узел.updateDisplayOrigin();
  44. // Необходимо для статических физических объектов.
  45. if ("refreshBody" in узел)
  46. {
  47. узел.refreshBody();
  48. }
  49. // Выполняем дополнительные пользовательские действия.
  50. if (описание.после)
  51. {
  52. описание.после(узел);
  53. }
  54. }
  55. }