2016-02-27 61 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