【问题标题】:Add sprite in function in Phaser 3在 Phaser 3 中的函数中添加精灵
【发布时间】:2020-01-27 04:06:51
【问题描述】:

我正在向我的游戏添加这样的精灵:

enemy = this.physics.add.sprite(280, 32, 'enemy');

现在我想从这样的函数中添加它:

spawn(this.enemy);

function spawn(enemy) {
    enemy = this.physics.add.sprite(280, 32, 'enemy');
}

它不起作用,我收到以下错误:

TypeError: this.physics is undefined

我要写什么而不是this.physics

【问题讨论】:

    标签: sprite phaser-framework 2d-games


    【解决方案1】:

    您应该改为使用 arrow function,如下所示:

    首先,在函数preload()中,添加精灵:

    this.load.spritesheet('enemy', 'assets/enemy.png', { frameWidth: 32, frameHeight: 48 });
    

    其次,在函数create()内,添加以下代码:

    spawn = (enemyName) => {
        enemyPlayer = this.physics.add.sprite(400, 450, enemyName);
    }
    
    spawn('enemy');
    

    如您所见,我们将精灵的名称作为函数的参数传递。现在,您可以将此函数重用于“spawn” 其他sprites。例如,spawn('stars')

    【讨论】:

    • 没有解释为什么“this.physics”是未定义的
    • 因为this 在函数中不再指代同一事物;范围发生了变化,所以现在函数的 this 没有 physics 定义。
    猜你喜欢
    • 2014-10-02
    • 2014-03-08
    • 2020-06-01
    • 2021-09-28
    • 2019-08-13
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 2014-08-26
    相关资源
    最近更新 更多