2017-02-16 6 views
0

Ich mache ein einfaches Beispiel hier, wo ich die Phaser-Bibliothek verwende.Typescript - "this" Schlüsselwort Fehler

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); 
    } 
} 

Also habe ich einen Fehler, während das Typoskript auf der „this“ hier keyword Kompilieren {erstellen: this.create}

Ich kann nicht verstehen, was ich falsch mache. Ich habe gerade den Konstruktor der Phaser.Game-Klasse in den Konstruktor meiner GameName-Klasse aufgerufen und füge die create-Funktion der Phaser.Game-Klasse als Parameter zum Super-Konstruktor hinzu.

Fehler: ‚super‘ muss vor dem Zugriff auf ‚dies‘ im Konstruktor einer abgeleiteten Klasse aufgerufen werden. (?)

Antwort

1

Versuchen Sie, die this.create Funktion in einer anonymen Funktion

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

Ja, auf diese Weise ist der Fehler weg und es kompiliert, aber es tritt überhaupt nicht in die Funktion ein. Aber wenn ich es tun auf diese Weise -> Konstruktor (Breite: Anzahl, Höhe: Zahl?) { Super (Breite, Höhe, Phaser.AUTO, 'PhaserDemo', {erstellen:() => { this.state.add ("Preloader", Preloader, true); }}); } } Es funktioniert gut. –

Verwandte Themen