libgdx ScissorStack не работает должным образом

Я пытаюсь создать своего рода «индикатор прогресса», но отсечение не работает так, как я ожидаю. Это то, что я делаю неправильно или что я неправильно истолковал?

draw() рутина, которая должна обрезать:

    @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();
        }
    }
}

Полный пример кода дляКлипТест группа учебный класс,TestScreen и скриншот.

ClipTest это подкласс группы, используемый для демонстрации «ошибки».ClipImage является подклассом Image, который выполняет отсечениеdraw().ClipTest имеет 2 изображения, фон и передний план.

Фон - это черное изображение, и оно всегда должно быть в полный размер индикатора выполнения.

Передний план - это белое изображение, ширина которого обрезается в зависимости от процента полосы.

Странный результат, который я обнаружил, заключается в том, что, хотя на переднем плане используется класс отсечения, на самом деле фоновое изображение является тем, которое обрезается.

Ожидаемый результат был создан с помощью фотошопа (так как я не мог произвести его с помощью кода).

Есть идеи, что случилось?

Ответы на вопрос(1)

Ваш ответ на вопрос