如何使用 Phaser 3 中的函数绘制精灵?

How to draw sprites using a function in Phaser 3?

这是我的代码:

Create (){
spawn();
}
function spawn(){
var sprite = this.physics.add.sprite(50,50,'spritesheet','red.png');
}

现在,当我 运行 这段代码时,我收到如下错误:

未捕获类型错误:无法读取未定义的 属性'add'

问题出在函数的 sprite 部分,但是当我在 create 函数中直接使用相同的代码时,它就起作用了。那么如何让它在外部函数中工作。

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>

如评论所述:
Create() 中,thisspawn() 中的 this 不同。
因此需要在这些函数之间正确绑定。 一种方法:

Create() {
    spawn.bind(this)
    spawn();
}