2017-02-16 9 views
0

Я делаю простой пример здесь, где я использую библиотеку Phaser.Typcript - ошибка «этого» ключевого слова

module GameName { 
    class GameName extends Phaser.Game{ 

     constructor(width?:number, height?:number){ 
      super(width, height, Phaser.AUTO, 'PhaserDemo', {create:this.create}); 
     } 

     create() { 
      this.state.add("Preloader", Preloader, true); 
     } 
    } 

    window.onload =() => { 
     new GameName(1280, 720); 
    } 
} 

Так я получил сообщение об ошибке при компиляции машинописи на «это» ключевое слово здесь {создания: this.create}

Я не могу понять, что я делаю неправильно. Я просто вызвал конструктор класса Phaser.Game в конструкторе моего класса GameName, и я добавляю функцию create класса Phaser.Game в качестве параметра супер-конструктора.

Ошибка: «Супер» должно быть вызвано перед доступом к «этому» в конструкторе производного класса. (?)

ответ

1

Попробуйте обертывание функции this.create в анонимной функции

constructor(width?:number, height?:number){ 
    super(width, height, Phaser.AUTO, 'PhaserDemo', { 
    create:() => this.create(), 
    }); 
} 
+0

Да, таким образом, ошибка исчезла и он компилируется, но он вообще не входит в функцию. Но если я сделать это таким образом -> конструктор (ширина: количество, высота: номер?) { супер (ширина, высота, Phaser.AUTO, 'PhaserDemo', {создать:() => { this.state.add («Preloader», Preloader, true); }}); } } Все работает отлично. –