使演员剪辑的孩子图片
问题描述:
我想要一个绘制drawable的演员,但剪辑它的演员的大小。我从窗口小部件派生这个类,并使用硬编码值作为一个简单的测试:使演员剪辑的孩子图片
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();
}
}
没有削波,虽然进行,可绘制出溢出的演员界。如果它很重要,这个演员是表格的一部分。我相信我错误地使用了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();
}
}
不确定这是问题,但'clipBegin'返回一个布尔值,如果返回true,则应该只调用'clipEnd'。 (文档非常稀少,它意味着如果剪辑返回false,我认为您不应该调用draw):http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/ scene2d/Actor.html#clipBegin-float-float-float-float- – 2015-04-05 18:00:32
你有没有想过这个问题? – you786 2015-07-10 05:44:50