制作演员剪辑子图像
Make actor clip child Image
我想要一个绘制可绘制对象的 actor,但将其裁剪到 actor 的大小。我从 Widget 派生这个 class,并使用一些硬编码值作为简单测试:
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();
}
}
尽管没有执行裁剪,可绘制对象超出了 actor 的边界。如果重要的话,这个演员是 Table 的一部分。我相信我错误地使用了 clipBegin() / clipEnd() 方法。正确的做法是什么?
谢谢
这是我根据评论和我自己的实验发现的。在开始剪辑之前和绘图之后刷新批处理以确保正确的绘图被剪辑是很重要的。
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();
}
}
我想要一个绘制可绘制对象的 actor,但将其裁剪到 actor 的大小。我从 Widget 派生这个 class,并使用一些硬编码值作为简单测试:
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();
}
}
尽管没有执行裁剪,可绘制对象超出了 actor 的边界。如果重要的话,这个演员是 Table 的一部分。我相信我错误地使用了 clipBegin() / clipEnd() 方法。正确的做法是什么?
谢谢
这是我根据评论和我自己的实验发现的。在开始剪辑之前和绘图之后刷新批处理以确保正确的绘图被剪辑是很重要的。
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();
}
}