2014-02-24 69 views
2

我的代碼有問題,在我開始使用步驟繪製UI之後出現,我有3件事情正在使用Batch進行繪製,並且舞臺上有2個按鈕由Stage繪製,但我的「精靈」中只有2個正在繪製。下面是代碼:Libgdx:舞臺正在搞批處理

public void render(float delta) { 
    Gdx.gl.glClearColor(0.95F, 0.95F, 0.95F, 0.95F); 
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 

    deltaTime = Gdx.graphics.getDeltaTime(); 

    camera.update(); 
    generalUpdate(touch, camera, deltaTime, pointer); 
    bounce(deltaTime); 

    stage.setCamera(camera); 
    batch.setProjectionMatrix(camera.combined); 

    batch.begin(); 
     batch.draw(Assets.spr_bg, 0, 0); 
     batch.draw(Assets.spr_title, 540-Assets.spr_title.getWidth()/2, titleY-Assets.spr_title.getHeight()/2); 
     Assets.font_small.draw(batch, "some text", 540-Assets.font_small.getBounds("(c)2014 HateStone Games").width/2, 1920-64-Assets.font_small.getBounds("(c) HateStone Games").height/2); 
     stage.draw(); 
    batch.end(); 
} 

它是文本「一些文本」不拿得出,如果我註釋掉,它會瘋狂的,標題精靈不拿得出任何和灰色框隨機出現。

另外,如果我移動「stage.draw();」在批次之外它沒有被繪製

+0

你應該在'batch.begin() - batch.end()'塊之外將'stage.draw()'明確地移動。兩個繪圖'SpriteBatch''不能很好地結合在一起......你也不需要調用'Gdx.Graphics.getDelta()',因爲你的render方法中有一個參數delta。只是我會解決一些問題。 – Springrbua

+0

它的工作將'stage.draw()'移動到批處理後:) – Jolly

+0

我已經閱讀了您的問題中的最後一句話後刪除了我的答案xD – Springrbua

回答

5

Stage有它自己的SpriteBatch,它吸取了一切。所以你begin() a SpriteBatch而你的其他SpriteBatch正在繪製。因此致電stage.draw()之前致電batch.end()。這應該可以解決你的問題。