2013-08-19 117 views
0

我想創建一個只使用精靈的主菜單。然而,當它被渲染和一切時,精靈快速閃爍。它爲什麼這樣做?爲什麼我的精靈會在LibGDX中閃爍?

@Override 
public void show() { 
    batch = new SpriteBatch(); 

    texture = new Texture("ui/mainmenu.png"); 
    mainMenu = new Sprite(texture); 
    mainMenu.setSize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 

    batch.begin(); 
    mainMenu.draw(batch); 
    batch.end(); 
} 

@Override 
public void render(float delta) { 
    Gdx.gl.glClearColor(0, 0, 0, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
} 
+0

檢查我的答案。它應該解決你的問題。 –

回答

2

這正好在你的渲染方法:

batch.begin(); 
mainMenu.draw(batch); 
batch.end(); 

渲染是一個不斷調用該方法,顯示在屏幕顯示時,只調用一次。

+0

感謝您的回覆,但是當我將這三行代碼放入渲染方法時,我只能看到空白屏幕。 – user2697285

+1

Gdx.gl.glClearColor(0,0,0,1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 你必須把它放在這之後。 – Lestat

+0

不幸的是,我仍然得到一個黑屏。 – user2697285

0

如果你使用這個確切的代碼,事情應該工作。每一幀,你清理你的屏幕,然後渲染你的精靈。

@Override 
public void show() { 
    batch = new SpriteBatch(); 

    texture = new Texture("ui/mainmenu.png"); 
    mainMenu = new Sprite(texture); 
    mainMenu.setSize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 

} 

@Override 
public void render(float delta) { 
    //clear screen to black. 
    Gdx.gl.glClearColor(0, 0, 0, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
    //render sprite 
    batch.begin(); 
    mainMenu.draw(batch); 
    batch.end(); 
} 
0

使用正交相機呈現您的精靈。這可能適合你

OrthographicCamera cam; 
@Override 
public void show() { 
    batch = new SpriteBatch(); 
    cam= new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 
    cam.position.set(Gdx.graphics.getWidth()/2, Gdx.graphics.getHeight()/2,0); 
    cam.update(); 
    texture = new Texture("ui/mainmenu.png"); 
    mainMenu = new Sprite(texture); 
    mainMenu.setSize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 

} 

@Override 
public void render(float delta) { 
    //clear screen to black. 
    Gdx.gl.glClearColor(0, 0, 0, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
    //render sprite 
    batch.setProjectionMatrix(cam.combined); 
    batch.begin(); 
    mainMenu.draw(batch); 
    batch.end(); 
}