使用Typescript设置Phaser游戏

时间:2016-02-27 02:41:16

标签: typescript phaser-framework

我正在开始游戏,我想使用Phaser作为我的游戏框架。除此之外,我当前的堆栈包括Typescript和Webpack。但是,我的问题是,当我尝试扩展Phaser Game类Phaser.Game时,我无法让Phaser工作,如下所示:

export class Game extends Phaser.Game {
  sprite: Phaser.Sprite;

  constructor(public width: number, public height: number) {
    super(width, height, Phaser.AUTO, 'game', null);

    this.state.add('Boot', Boot, false);

    this.state.start('Boot');
  }

  preload(): void {
    console.log('preload');
  }

  create(): void {
    console.log('create');
  }

  update(): void {
    console.log('update');
  }

  render(): void {
    console.log('render');
  }
}

这是大多数人所做的。然而,似乎除了构造函数之外,我的函数都没有被调用。除了上面的方法,我非常喜欢,我看到人们做了以下事情:

game: Phaser.Game;

constructor() {
  this.game = new Phaser.Game(1280, 720, Phaser.AUTO, 'content', {
    create: this.create, preload: this.preload
  });
}

基本上,他们定义了Phaser.Game的变量并创建了一个新实例,并在构造函数中传递这些方法。这实际上有效,但我想知道为什么前者没有。我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

我是这样设立的:

<强>游戏

C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\

可选状态常量

export class Game extends Phaser.Game {

        constructor() {

            var renderMode: number = Phaser.AUTO;

            super(100, 100, renderMode, "content", null);

            //add the states used the first will automatically be set
            this.state.add(GameStates.BOOT, Boot, true);
            this.state.add(GameStates.PRELOADER, Preloader, false);
            this.state.add(GameStates.MAINMENU, MainMenu, false);
            this.state.add(GameStates.GAME, SwipeEngine, false);

        }

}

每个州

export class GameStates {

        static BOOT: string = "boot";
        static PRELOADER: string = "preloader";
        static MAINMENU: string = "mainMenu";
        static GAME: string = "game";

    }