фазер 3 с классами es6 - PullRequest
       13

фазер 3 с классами es6

0 голосов
/ 04 сентября 2018

Итак, я пытаюсь сделать Phaser 3 с классами es6. мой код:

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() два раза. право

1 Ответ

0 голосов
/ 04 сентября 2018

В вашей строке,

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.

...