2013-10-14 44 views
0

我有一個渲染方法,我不知道爲什麼它沒有發生。下面的代碼我到目前爲止:LibGDX render()方法沒有觸發

public class DevMaze extends Game { 

    SpriteBatch batch; 
    BitmapFont font; 

    public void create() { 
     ... 
     this.setScreen(new MainMenuScreen(this)); 
     ... 
    } 

    public void render() { 
     super.render(); 
    } 

    ... 
} 

的MainMenuScreen獲取設置,並呈現就好了,下面的代碼:

public class MainMenuScreen implements Screen { 

    final DevMaze game; 
    OrthographicCamera camera; 

    public MainMenuScreen(final DevMaze g) { 
     this.game = g; 

     camera = new OrthographicCamera(); 
     camera.setToOrtho(false, 800, 480); 
    } 

    public void render(float delta) { 
     ... 
     if (Gdx.input.isTouched()) { 
      game.setScreen(new GameScreen(game)); // This line runs 
      dispose(); 
     } 
    } 

但是,當我在屏幕設置爲我GameScreen,構造運行良好,但渲染方法永遠不會觸發:

public class GameScreen implements Screen { 

    final DevMaze game; 
    OrthographicCamera camera; 
    ... 

    public GameScreen(final DevMaze g) { 
     this.game = g; 

     // Create Camera 
     camera = new OrthographicCamera(); 
     camera.setToOrtho(false, 800, 480); 

     // Load assets 
     ... 

     System.out.println("ONE MORE LINE!"); // This prints 
    } 

    public void render() { 
     System.out.println("MADE IT TO GAME SCREEN"); // This does not prints 

     ... 
    } 

我需要知道爲什麼渲染方法不點火。

我真的不知道該從哪裏出發。我可以找到的每一個其他資源都告訴我確保我在我的遊戲擴展課程中擁有super.render() - 我這樣做。我試圖刪除我認爲不相關的代碼,並留下相關的代碼,但如果有任何其他信息需要了解這裏發生了什麼,請讓我知道。

這也是我的第一個與LibGDX項目之一,所以如果這是一個愚蠢的問題提前抱歉!

謝謝。

回答

4

public void render()需要public void render(float deltaTime)在您的GameScreen類。我假設你在GameScreen中有另一種DeltaTime的方法,它會被解僱,否則它不會編譯。

+2

總是(如果您使用的是Eclipse)將「@Override」添加到您的類中應該覆蓋超類方法的方法中。 Eclipse會警告你,如果這不是真的。 –

+0

@ P.T。當我使用Eclipse中的「添加未實現方法」時,它會自動添加'@ Override'。但刪除它不會產生警告,因爲它是一個接口而不是擴展類。至少在我的Eclipse版本中,它的工作原理就是這樣。對於課程,我會得到一個自動警告。 – noone