我试图创建一个“进度条”的排序,但剪辑似乎并没有按照我期望的方式工作。这是我做错了什么或者我误解了吗?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();
}
}
}
完整的样本代码。
ClipTest
是用于演示 “错误” 组的一个子类。ClipImage
是Image的子类,它在draw()
上执行剪切。ClipTest
有2个图像,背景和前景。
背景是一个黑色的图像,它应该始终是进度条的完整大小。
前景是白色的图像,它的宽度取决于条的百分比。
我发现的奇怪结果是,虽然前景使用的是裁剪类,但背景图像是实际裁剪的图像。
预期结果是使用photoshop创建的(因为我无法通过代码生成它)。
任何想法有什么不对?
我知道你说的“种类”,所以它可能不是你所需要的,但以防万一你不知道它 - 如果你得到夜间释放,那么有一个进度条http://libgdx.badlogicgames .com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/ui/ProgressBar.html – Chase
@Chase:我真的很想这么做,但它也因为所有其他语法更改而破坏了我的项目阶段的构造器被改变了,等等)。我希望这将是一个小疏忽,结果是 – twig
你应该问这个http://gamedev.stackexchange.com而不是 – ashes999