Контейнер не отображает дочерние элементы при объявлении ключевым словом «new» (Phaser 3) - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь объявить Container с ключевым словом new для модуляции кода (ссылка на эту статью ). Однако, когда я объявляю один с new Container(), он не отображает свое дочернее изображение / спрайт. Что я здесь не так делаю? Пожалуйста, смотрите мой код ниже:

var config = {
  type: Phaser.AUTO,
  width: 800,
  height: 600,
  backgroundColor: '#010101',
  parent: 'phaser-example',
  physics: {
    default: 'arcade',
    arcade: {
      gravity: { y: 200 },
      debug: true
    }
  },
  scene: {
    preload: preload,
    create: create
  }
};

var container1, container2;
var game = new Phaser.Game(config);

function preload () {
   this.load.image('mushroom', 'assets/sprites/mushroom2.png');
   this.load.image('lemming', 'assets/sprites/lemming.png');
}

function create () {
  var image1 = this.add.image(-40, 0, 'mushroom');
  var image2 = this.add.image(40, 0, 'lemming');

  container1 = this.add.container(100, 200);
  container1.add(image1);
  container1.setSize(128, 64);
  this.physics.world.enable(container1);
  container1.body.setVelocity(0, 200).setBounce(1, 1).setCollideWorldBounds(true);

  container2 = new Phaser.GameObjects.Container(this, 300, 200)
  container2.add(image2);
  container2.setSize(128, 64);
  this.physics.world.enable(container2);
  container2.body.setVelocity(0, 200).setBounce(1, 1).setCollideWorldBounds(true);

  // container1 renders image1, but container2 doesn't render image2.

  console.log(this.add.image, Phaser.GameObjects.Container);
  console.log(container1, container2);
  console.log(container1.list[0], container2.list[0]);
}

Если вы хотите запустить этот код, пожалуйста, go до Phaser3 SandBox , скопируйте и вставьте вышеуказанный код и нажмите Выполнить код (извините, я не знаю, как сохранить свой код там). Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 03 марта 2020

Копирование @ ответа rexrainbow на форуме Phaser:

A новый игровой объект не будет добавлен в список отображения или обновление списка, вызов этот метод для добавления этого контейнера в список отображения.

this.add.existing(container2);

...