libgdx ScissorStack funktioniert nicht wie erwartet

Ich versuche, eine Art "Fortschrittsbalken" zu erstellen, aber der Ausschnitt scheint nicht so zu funktionieren, wie ich es mir vorgestellt habe. Ist das etwas, was ich falsch mache oder etwas, das ich falsch interpretiert habe?

Dasdraw() Routine, die geschnitten werden soll:

    @Override
    public void draw(SpriteBatch batch, float parentAlpha) {
        Rectangle scissors = new Rectangle();
        Rectangle clipBounds = new Rectangle(getX(), getY(), getWidth() * 0.75f, getHeight());

        ScissorStack.calculateScissors(
                getStage().getCamera(),
                getStage().getGutterWidth(),
                getStage().getGutterHeight(),
                getStage().getCamera().viewportWidth,
                getStage().getCamera().viewportHeight,
                batch.getTransformMatrix(),
                clipBounds, scissors);

        if (ScissorStack.pushScissors(scissors)) {
            super.draw(batch, parentAlpha);
            ScissorStack.popScissors();
        }
    }
}

Vollständiger Beispielcode fürClipTest-Gruppe Klasse,TestScreen und Screenshot.

ClipTest ist eine Unterklasse der Gruppe, die verwendet wird, um den "Bug" zu demonstrieren.ClipImage ist eine Unterklasse von Image, die das Zuschneiden vornimmtdraw().ClipTest hat 2 Bilder, Hintergrund und Vordergrund.

Der Hintergrund ist ein schwarzes Bild und sollte immer die volle Größe des Fortschrittsbalkens haben.

Der Vordergrund ist ein weißes Bild und seine Breite wird abhängig vom Prozentsatz des Balkens abgeschnitten.

Das seltsame Ergebnis, das ich gefunden habe, ist, dass, obwohl der Vordergrund die Beschneidungsklasse verwendet, das Hintergrundbild das ist, das tatsächlich beschnitten wurde.

Das erwartete Ergebnis wurde mit Photoshop erstellt (da ich es nicht per Code erstellen konnte).

Irgendeine Idee, was los ist?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage