Grouping 使一个组将演员隐藏在其边界之外

Grouping 使一个组将演员隐藏在其边界之外,grouping,libgdx,Grouping,Libgdx,我创建了一个非常简单的绘图,通过在屏幕右侧添加新图像,然后使其向左侧移动,可以动态更新。这样,屏幕边界内的绘图看起来就像是随着时间的推移而绘制的 不幸的是,当这样做的时候,我必须让图像从屏幕外开始,移动到视图中,在它们完全离开左侧屏幕之前,我无法再次移除它们。这会导致图像在屏幕边界之外部分可见 控件创建为一个组,其中包含两个静态图像(黑色背景和屏幕图像作为前景),以及中间的所有运动图像。然后将该组添加到我的阶段(与所有其他参与者一样),并作为阶段的一部分绘制 在下图中,控件的边界用红色标记。我想

我创建了一个非常简单的绘图,通过在屏幕右侧添加新图像,然后使其向左侧移动,可以动态更新。这样,屏幕边界内的绘图看起来就像是随着时间的推移而绘制的

不幸的是,当这样做的时候,我必须让图像从屏幕外开始,移动到视图中,在它们完全离开左侧屏幕之前,我无法再次移除它们。这会导致图像在屏幕边界之外部分可见

控件创建为一个
,其中包含两个静态图像(黑色背景和屏幕图像作为前景),以及中间的所有运动图像。然后将该
组添加到我的
阶段
(与所有其他参与者一样),并作为
阶段
的一部分绘制

在下图中,控件的边界用红色标记。我想隐藏运动图像中超出这些界限的部分。使用我错过的一些libGDX功能可以做到这一点吗?也许是通过某种方式限制团队的绘图区域

我的其他选择是在屏幕前绘制部分蓝色背景,隐藏异常值,或者使屏幕边缘足够厚以隐藏它们。我认为这两种解决方案都是不必要的不便,我很确定有更好的方法可以做到这一点


有什么建议吗?

解决方案是使用


对我来说,只有在调用draw之后将“batch.flush();”替换为时,这才起作用。然而,我自己在这里用“batch.draw(…)”而不是“super.draw(…)”batch.flush()绘制;应在超级绘图(批次、父级Alpha)之后;
@Override
public void draw(SpriteBatch batch, float parentAlpha) {

    //Create a scissor recangle that covers my Actor.
    Rectangle scissors = new Rectangle();
    Rectangle clipBounds = new Rectangle(getX(),getY(),getWidth(),getHeight());
    ScissorStack.calculateScissors(camera, batch.getTransformMatrix(), clipBounds, scissors);
    batch.flush(); //Make sure nothing is clipped before we want it to.
    ScissorStack.pushScissors(scissors);

    //Draw the actor as usual
    super.draw(batch, parentAlpha);

    //Perform the actual clipping
    ScissorStack.popScissors();
}