Активируемый Phaser 3 спрайт не может начать сцену - PullRequest
0 голосов
/ 20 марта 2019

Я создал кликабельный спрайт в Phaser 3, используя машинопись. Я хочу изменить сцену при нажатии на спрайт:

export class BMO extends Phaser.GameObjects.Sprite {

    constructor(scene) {
        super(scene, 100,150, "bmo")
        this.scene.add.existing(this)
        this.setInteractive()

        this.on('pointerdown', function (pointer) {
            this.scene.start('GameOver');
        }, this);
    }
}

При нажатии на спрайт в запущенной игре я получаю:

this.scene.start не является функцией

Точно такой же код работает, когда он находится внутри сцены вместо спрайта:

export class GameScene extends Phaser.Scene {

    constructor() {
        super({key: "GameScene"})
    }

    create(): void {
        this.input.once('pointerdown', function (pointer) {
            this.scene.start('GameOver');
        }, this);
    }
}

Как мне изменить сцены из кликабельного спрайта в Phaser 3?

1 Ответ

1 голос
/ 21 марта 2019

Вы должны вызвать метод start для scene, свойство для Scene объекта, как вы сделали во втором примере:

this.scene.scene.start('GameOver');

scene свойство объекта Scene ссылается на ScenePlugin, посмотрите документы

...