Phaser - ошибка: невозможно прочитать свойство 'on' из null - PullRequest
1 голос
/ 06 октября 2019

Я работаю над простой игрой с использованием Phaser.

Мой код:

preload() {
  this.load.image('player', 'img/player.png');
}

create() {
  var player = this.add.sprite(100,100,'player');

  player.inputEnabled = true;
  player.input.on('pointerdown', () => {
    this.scene.stop('ThisScene');
    this.scene.start('NextScene');
  })
}

Игра должна переключаться с одной сцены на другую, когда вы нажимаете на спрайта 'player',К сожалению, это приводит к ошибке: Не удается прочитать свойство 'on' со значением null

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 07 октября 2019

Причина, по которой это не работает, в том, что у вас есть смесь кода Phaser 2 и Phaser 3inputEnabled = true происходит из Phaser 2, а использование on прослушивателя событий - из Phaser 3.

Вы не указываете, какую версию вы используете, поэтому я предположу 3и исправьте код для этого:

preload() {
  this.load.image('player', 'img/player.png');
}

create() {
  var player = this.add.sprite(100,100,'player');

  player.setInteractive();

  player.on('pointerdown', () => {
    this.scene.start('NextScene');
  })
}

Когда игровой объект включен для ввода, вы слушаете события непосредственно на самом игровом объекте, а не на компоненте input.

1 голос
/ 06 октября 2019

Проверяли ли вы, работает ли pointerdown event? Попробуем заменить строку player.inputEnabled = true; на строку player.setInteractive();. Затем выполните console.log('pointerdown event working') внутри event listener:

create() {
  var player = this.add.sprite(100,100,'player');

  player.setInteractive();

  player.input.on('pointerdown', () => {
    console.log('pointerdown event working');

    this.scene.stop('ThisScene');
    this.scene.start('NextScene');
  })
}

Дайте мне знать, если это работает ... Если нет, мы узнаемчто event стреляет, и мы возьмем его оттуда.

...