这是我的代码:
Create (){
spawn();
}
function spawn(){
var sprite = this.physics.add.sprite(50,50,'spritesheet','red.png');
}
现在,当我运行此代码时,出现类似以下错误:
未捕获的TypeError:无法读取未定义的属性“ add”
问题出在函数的子画面部分,但是当我直接在create函数中使用相同的代码时,它就可以工作。因此,如何使它在外部函数中起作用。
答案 0 :(得分:1)
class myScene extends Phaser.Scene {
constructor (config)
{
super(config);
}
preload ()
{
this.load.image('dude', 'sprites/phaser-dude.png')
}
create ()
{
this.spawn()
}
spawn()
{
var sprite = this.physics.add.sprite(50, 50, 'dude')
}
}
var config = {
type: Phaser.AUTO,
parent: 'phaser-example',
loader: {
baseURL: 'https://cdn.jsdelivr.net/gh/samme/phaser-examples-assets@v2.0.0/assets/',
crossOrigin: 'anonymous'
},
width: 800,
height: 600,
physics: {
default: 'arcade',
arcade: {
gravity: { y: 1 }
}
},
};
var game = new Phaser.Game(config);
game.scene.add('myScene', myScene, true);
<script src="//cdn.jsdelivr.net/npm/phaser@3.17.0/dist/phaser.min.js"></script>
答案 1 :(得分:1)
与评论中一样:
在Create()
中,this
与this
中的spawn()
不同。
因此,需要在这些功能之间正确绑定。
一种方法:
Create() {
spawn.bind(this)
spawn();
}