2016-07-11 17 views
0

Ich füge einen Schauspieler zu einer Gruppe hinzu, die alle meine Darsteller nicht zeigen lässt. Die Schauspieler Streck-Verfahren ist Shaperenderer wie untenlibgdx: Warum rendern alle meine Schauspieler nicht, wenn ich einen Schauspieler mit Shaperrenderer hinzufüge?

@Override 
public void draw(Batch batch, float parentAlpha) { 
    super.draw(batch, parentAlpha); 

    shapeRenderer.begin(ShapeRenderer.ShapeType.Filled); 
    shapeRenderer.rectLine(ax, ay, bx, by, 5); 
    shapeRenderer.end(); 
} 

gezeigt wann immer ich die Schauspieler alle anderen Akteuren in der Gruppe anzeigen, ohne ein Problem zu entfernen. Wie kann ich das beheben?

Antwort

2

Sie können den Anfang/das Ende eines SpriteBatch und eines ShapeRenderer nicht verschachteln. Wenn die Draw-Methode eines Actors aufgerufen wird, wurde begin() bereits am SpriteBatch aufgerufen. So können Sie Ihre draw() Methode, wie dieses Problem zu beheben:

@Override 
public void draw(Batch batch, float parentAlpha) { 
    super.draw(batch, parentAlpha); 
    batch.end(); 
    shapeRenderer.begin(ShapeRenderer.ShapeType.Filled); 
    shapeRenderer.rectLine(ax, ay, bx, by, 5); 
    shapeRenderer.end(); 
    batch.begin(); 
} 

Auch stellen Sie sicher, dass die Projektionsmatrix für die Form Renderer festgelegt haben.

Beachten Sie, dass Sie einen zusätzlichen SpriteBatch-Flush für jeden Akteur verursachen, der dies tut.