Я использую WebPack для сборки своей игры, и у меня возникла проблема с областью видимости. Я постараюсь объяснить.
Файл моего класса TestScene:
import 'phaser';
import Npcs from 'modules/Npcs.js';
const npcs = new Npcs()
export class TestScene extends Phaser.Scene {
constructor () {
super('TestScene')
}
preload(){...}
create(){
this.physics.add.collider(
this.player,
this.bombs,
npcs.hitBomb,
null,
this
)
}
}
Файл моего класса Npcs:
import 'phaser';
const gameplayStates = new GameplayStates()
export default class Npcs {
hitBomb (player, bomb) {
this.physics.pause();
player.setTint(0xff0000);
this.entityDestroy()
}
entityDestroy () {
console.log('destroyed')
}
}
this.player
и this.bombs
на месте и работают, как и ожидалось, так, как я планировал.
Обратный вызов в методе коллайдера имеет this
(testScene) в качестве контекста, поэтому this.entityDestroy()
больше не работает и выдает ошибку:
app.bundle.js:116068 Uncaught TypeError: this.entityDestroy is not a function
.
Я подозреваю, что это потому, что класс npcs
не является областью действия this
, когда метод вызывается из коллайдера.
Как правильно обойти это с помощью метода коллайдера?
Спасибо всем,
Ваша помощь очень ценится.
MHC