html, body {
  height: 100%;
}

body {
  margin: 0;
  padding: 0;
  background: #111;
  color: #eee;
  font: caption;
}

a:link, a:visited {
  color: #7FDBFF;
}

a:hover, a:focus {
  color: #01FF70;
}
/* global Phaser, PhaserSceneWatcherPlugin */

const eventsCenter = new Phaser.Events.EventEmitter();

class MyScene extends Phaser.Scene {
  preload() {
    this.load.image("face", "assets/pics/bw-face.png");
    this.load.image("bikkuriman", "assets/sprites/bikkuriman.png");
  }

  create() {
    this.add.image(400, 300, "face");

    const self = this;

    eventsCenter.on("battleSceneStart", function (data) {
      console.log("data", data);
      let key = { key: "handle" };
      let battle_scene = new Battle_Scene(key);
      self.scene.add("handle", battle_scene, true);
      console.log("battle_scene", battle_scene);
      console.log("scene.get('handle')", self.scene.get("handle"));
    });

    this.time.delayedCall(1000, function () {
      eventsCenter.emit("battleSceneStart", "data");
    });
  }
}

class Battle_Scene extends Phaser.Scene {
  constructor(handle) {
    super(handle);
  }
  create() {
    console.log("battle_scene created and started");

    this.add.image(400, 300, "bikkuriman");
  }
  update() {}
}

const config = {
  width: 800,
  height: 600,
  scene: new MyScene(),
  loader: {
    baseURL: "https://labs.phaser.io",
    crossOrigin: "anonymous"
  },
  plugins: {
    global: [
      {
        key: "SceneWatcher",
        plugin: PhaserSceneWatcherPlugin,
        start: true
      }
    ]
  }
};

new Phaser.Game(config);
Run Pen

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdn.jsdelivr.net/npm/phaser@3.55.0/dist/phaser.js
  2. https://cdnjs.cloudflare.com/ajax/libs/colors/3.0.0/js/colors.js
  3. https://cdn.jsdelivr.net/npm/phaser-plugin-scene-watcher@6.0.0/dist/phaser-plugin-scene-watcher.umd.js