Phaser - error: Cannot read property 'on' of null
Phaser - error: Cannot read property 'on' of null
我正在使用 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');
})
}
当您点击 sprite 'player' 时,游戏应该从一个场景切换到另一个场景。不幸的是,这给出了一个错误:无法读取 属性 'on' of null
有什么想法吗?
您检查过 pointerdown event
是否正常工作吗?让我们尝试用行 player.setInteractive();
替换行 player.inputEnabled = true;
。然后,在 event listener
:
中执行 console.log('pointerdown event working')
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
正在发射,我们会从那里开始。
它不起作用的原因是您在此处混用了 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
组件上监听事件。
我正在使用 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');
})
}
当您点击 sprite 'player' 时,游戏应该从一个场景切换到另一个场景。不幸的是,这给出了一个错误:无法读取 属性 'on' of null
有什么想法吗?
您检查过 pointerdown event
是否正常工作吗?让我们尝试用行 player.setInteractive();
替换行 player.inputEnabled = true;
。然后,在 event listener
:
console.log('pointerdown event working')
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
正在发射,我们会从那里开始。
它不起作用的原因是您在此处混用了 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
组件上监听事件。