我正在使用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');
})
}
当您单击精灵“玩家”时,游戏应从一个场景切换到另一个场景。不幸的是,这会产生一个错误:无法读取null的属性“ on”
有什么想法吗?
答案 0 :(得分:2)
之所以不起作用,是因为您在这里混入了Phaser 2和Phaser 3代码。 inputEnabled = 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 :(得分:1)
您是否已检查 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
正在开火,我们将从那儿拿走它。