使演员剪辑的孩子图片

使演员剪辑的孩子图片

问题描述:

我想要一个绘制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()方法。什么是正确的方法来做到这一点?

谢谢

+0

不确定这是问题,但'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

+0

你有没有想过这个问题? – you786 2015-07-10 05:44:50

这是我发现基于评论和我自己的实验。在开始剪辑之前和绘图之后刷新批处理以确保正确绘制剪切很重要。

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