2016-02-27 39 views
2

我开始一个游戏,我想使用Phaser作为我的游戏框架。除此之外,我目前的堆栈还包括Typescript和Webpack。不过,我的问题是,我不能让移相器工作时,我尝试如下延长移相器游戏类Phaser.GamePhantom游戏设置与Typescript

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一个变量,并创建一个新的实例,并通过这些方法沿构造。这实际上有效,但我想知道为什么前者不。我错过了什么吗?

回答

2

我建立我的是这样的:

游戏

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"; 

    } 

每个国家

export class Boot extends Phaser.State { 

     preload() { 

      console.log("Boot::preload"); 


      this.load.image("blah"); 
      this.load.image("blah2"); 

      this.load.json("blah"), true); 

     } 

     create() { 

      console.log("Boot::create"); 


      //start the preloader state 
      this.game.state.start(GameStates.PRELOADER, true, false); 

     } 

     shutdown(): void { 

      console.log("Boot::shutDown"); 

     } 

    } 
+1

是的,甚至在你回答之前,我意识到我不需要在游戏类中进行任何回调......因为游戏发生在'GameState'中。所以我也通过了null并且设置了状态。最终它解决了。感谢您的回答。无论如何,我标记它,以信贷! – LordTribual

+0

主要的是你有它的固定好友。谢谢! – Clark