Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Libgdx 使演员剪辑儿童图像_Libgdx - Fatal编程技术网

Libgdx 使演员剪辑儿童图像

Libgdx 使演员剪辑儿童图像,libgdx,Libgdx,我想要一个演员画一个可画的,但剪辑到演员的大小。我从Widget派生这个类,并使用一些硬编码值作为一个简单的测试: public class MyWidget extends Widget { public MyWidget(Drawable drawable) { setDrawable(drawable); setSize(100, 100); } public void draw(Batch batch, float parent

我想要一个演员画一个可画的,但剪辑到演员的大小。我从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();
    }
}
但不执行剪辑,可绘制的内容溢出到演员的边界之外。这个演员是桌子的一部分,如果有关系的话。我认为我没有正确使用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
。(文档非常稀疏,这意味着如果clip返回false,你也不应该调用draw),我想):你有没有发现这个问题?