gpt4 book ai didi

grouping - 使一个组将 Actor 隐藏在其边界之外

转载 作者:行者123 更新时间:2023-12-02 09:13:51 25 4
gpt4 key购买 nike

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

不幸的是,当这样做时,我必须让图像从屏幕外部开始,然后进入 View ,并且在它们完全移出左侧屏幕之前我无法再次将其删除。这会导致图像在屏幕边界之外部分可见。

该控件被创建为一个Group,其中包含两个静态图像(黑色背景和作为前景的屏幕图像),以及其间的所有移动图像。然后,将此Group 添加到我的Stage(像所有其他 Actor 一样),并作为Stage 的一部分进行绘制。

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

An illustration of how the screen works.

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

有什么建议吗?

最佳答案

解决方案是使用 ScissorStack .

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

关于grouping - 使一个组将 Actor 隐藏在其边界之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17571496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com