gpt4 book ai didi

java - ShapeRenderer 不绘制在运行时添加的新线

转载 作者:行者123 更新时间:2023-11-30 02:10:46 25 4
gpt4 key购买 nike

TL;DR 我的 ShapeRenderer 会渲染线条,但只是有时。

我看过这些帖子:LibGDX: ShapeRenderer drawing... nothing , Libgdx NESTED ShapeRenderer not drawing lines , 和 https://stackoverflow.com/questions/28800505/libgdx-shaperenderer-not-drawing-in-loop .我有同样的问题,但他们都没有答案。我希望有人能发现我做错了什么

我有两个类,ApplicationListener A 和 GestureListener B。在 ApplicationListener A 中,我有一个全局 ArrayList<StarPair> pairs我在 create() 中实例化了它A 的方法。 A 也有一个实例化的 ShapeRenderer draw .在我的渲染循环中,我有以下代码:

// Render lines
cam.update();
draw.setProjectionMatrix(cam.combined);
draw.begin(ShapeRenderer.ShapeType.Line);
draw.setColor(Color.GREEN);
for(StarPair pair : pairs)
draw.line(pair.v1, pair.v2);
draw.end();

当我将随机星对对象从 create() 中放入列表时,效果很好方法。

我想要的行为是让列表开始为空,并让 touchDown()来自 B 的事件添加 StarPair对列表的对象,然后由 draw 呈现.

touchDown()我创建了一个虚拟 StarPair newPair并将其添加到 pairs与:gazer.pairs.add(newPair); ,其中 gazer 是具有 ShapeRenderer drawA 的实例.我可以看到它被添加到 pairs当我调试并在 render() 中放置条件断点时仅在 gazer.pairs.add(newPair); 上的断点后命中列表从大小 0 增长到大小 1。v1 和 v2 中的坐标与我预期的一样,但是新行永远不会在我的屏幕上开始呈现,尽管它们是列表中的 StarPair。

有人知道为什么吗?

最佳答案

我添加到列表末尾的 newPair 对象在每次调用 touchDown 时都被设置为 new StarPair() ,但它被声明为全局变量,因此我的 ApplicationListener 中的 pairs 列表正在获取对立即被清除的对象的引用 - 因此没有画线。将 newPair 设置为 touchDown() 本地解决了这个问题。

TL;DR 我的错误,不是 libGDX

关于java - ShapeRenderer 不绘制在运行时添加的新线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30135989/

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