我想要一个绘制drawable的actor,但将其剪辑为actor的大小。我从Widget派生这个类,并使用一些硬编码值作为一个简单的测试:
public class MyWidget extends Widget {
public MyWidget(Drawable drawable) {
setDrawable(drawable);
setSize(100, 100);
}
public void draw(Batch batch, float parentAlpha) {
clipBegin(getX(), getY(), 20, 20);
drawable.draw(batch, getX(), getY(), 500, 500);
clipEnd();
}
}
虽然没有执行剪裁,但是drawable溢出了actor的边界。如果重要的话,这个演员是表的一部分。我相信我错误地使用了clipBegin()/ clipEnd()方法。这样做的正确方法是什么?
由于
答案 0 :(得分:4)
这是我根据评论和我自己的实验发现的。在开始剪辑之前和绘制之后冲洗批次非常重要,以确保正确的绘图被剪裁。
public void draw(Batch batch, float parentAlpha) {
batch.flush();
if (clipBegin(getX(), getY(), 20.0f, 20.0f)) {
//do your drawing here
drawable.draw(batch, getX(), getY(), 500, 500);
batch.flush();
clipEnd();
}
}