2017-02-16 113 views
0

我正在做一个简单的例子,在这里我使用Phaser库。 {:this.create创建}Typescript - “this”关键字错误

我无法理解我在做什么错

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”关键字这里编译打字稿得到一个错误。我只是调用Phaser.Game类的构造函数到我的GameName类的构造函数中,并且将Phaser.Game类的create函数作为参数添加到超级构造函数中。

错误:必须在派生类的构造函数中访问'this'之前调用'super'。 (?)

回答

1

尝试在一个匿名函数

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

是的,这样错误消失了,它编译,但它根本没有进入函数。 但是,如果我做这种方式 - > 构造(宽度:编号,高度:数?){ 超(宽度,高度,Phaser.AUTO, 'PhaserDemo',{创造:()=> { this.state.add(“Preloader”,Preloader,true); }}); } } 它工作得很好。 –