2013-03-17 96 views
3

我遇到使用LibGDX的問題。LibGDX未運行render()方法

我有一個Screen,並在其render方法,我有:

public class LoadingScreen implements Screen{ 
private OrthographicCamera guiCam; 
private TankChallenge tankChallenge; 
private SpriteBatch batcher; 
private GL10 OpenGL; 

public LoadingScreen(TankChallenge tankChallenge) { 
    this.tankChallenge=tankChallenge; 
    Gdx.graphics.setTitle("RobotChallange Beta - Loading"); 

    float AR = Gdx.graphics.getHeight()/Gdx.graphics.getWidth(); 
    guiCam = new OrthographicCamera(10,10 * AR); 
    guiCam.position.set(10f/2,AR*10f/2,0); 
    batcher = new SpriteBatch(); 

    OpenGL = Gdx.graphics.getGL10(); 
    //loadAssets(); 
} 

@Override 
public void render(float delta) { 
    OpenGL.glClearColor(1, 0.5f, 1, 1); 
    OpenGL.glClear(GL10.GL_COLOR_BUFFER_BIT); 

    System.out.print("e"); 
    guiCam.update(); 
    Sprite sp = new Sprite(); 
    sp.setColor(1f,1f,0, 1); 
    sp.setSize(100,100); 
    sp.setOrigin(20, 0); 

    batcher.setProjectionMatrix(guiCam.combined); 
    batcher.begin(); 
    batcher.disableBlending(); 
    sp.draw(batcher); 
    batcher.end(); 
} 

我通過在implementes ApplicationListener類設置它調用它。我知道它正在到達LoadingScreen,因爲標題實際上被設置爲「RobotChallenge Beta - Loading」。

回答

16

我找到了解決這兩個問題的方法。我添加到遊戲擴展類:

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

感謝此問題已解決,我不需要重寫SetScreen方法。謝謝!

2

將此設置爲屏幕後,您需要在Game擴展課程中呼叫super.render()。舉例來說,我用下面的方法在我的主Game擴展類設置屏幕:

@Override 
public void setScreen(Screen screen) 
{ 
    super.setScreen(screen); 
    super.render(); 
} 

這似乎揭開序幕render()被調用。

+0

這解決了渲染不被調用的問題。現在我遇到了一個問題,我想我應該問另一個話題。渲染時我看到閃爍或閃爍。 如果我把它放在渲染中:OpenGL.glClearColor(1,0.5f,1,1); OpenGL.glClear(GL10.GL_COLOR_BUFFER_BIT);我看到屏幕總是從樹塊一直閃爍到黑色。 – yafrack 2013-03-18 08:44:54

+0

我有一個System.out.print(「e」);輸出結果只有一個「e」。我不知道什麼是錯的。 – yafrack 2013-03-18 09:08:25

+1

對不起,我不知道閃爍,我很久沒有使用過libgdx了,我只記得'render()'不能解決我的問題,並且解決了很多麻煩,並從我的舊代碼中刪除了忘記了我的項目文件夾的深度。 – 2013-03-18 09:21:10

1

只需在您的遊戲擴展類中刪除@Override render()即可解決問題。覆蓋setScreen方法會導致您提到的閃爍。