所以我正在尝试用es6类来做Phaser 3。我的代码:

class Pcu extends Phaser.Scene {
    constructor() {
        super({key: 'Create',active: true});
        this.bla = 0
    }

    preload() {}

    create() {
        this.bla = 1
    }
}

module.exports = Pcu


和:

const Phaser = require('phaser')
const Pcu = require('./scenes/Pcu')

class Main extends Phaser.Game {
    constructor() {
        super({
            type: Phaser.AUTO,
        })
        this.scene.add('Pcu', new Pcu(), false);
        this.aa = new Pcu()
    }

    blabla() {
        console.log(this.aa.bla)
    }
}
module.exports = Main


现在我的问题是(考虑我的代码)在this.bla中修改后如何从Main中访问create()吗? (现在console.log(this.aa.bla + 1)仅返回0)

顺便说一句,有没有更好的方法来做this.aa = new Pcu()?我的意思是现在就像我在做两次Pcu()一样。对?

最佳答案

在您的行中

this.scene.add('Pcu', new Pcu(), false);


您将在没有引用的情况下将Pcu类的新实例传递给scene.add()函数。这意味着您将无权访问Pcu实例。

我认为您想要的是这样的东西(反转您的声明和Pcu实例的使用):

this.aa = new Pcu();
this.scene.add('Pcu', this.aa, false);


然后,当您调用console.log(this.aa.bla)时,应该会看到所需的结果:1

关于javascript - es6类的相位器3,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52171910/

10-12 12:26