java - 如何在循环中为形状着色?
问题描述
为什么循环中的两个人物都只涂上一种颜色?而我需要一个涂成黑色,一个涂成蓝色。谢谢!
public void draw(Batch batch, float parentAlpha)
{
super.draw(batch, parentAlpha);
renderer.setProjectionMatrix(Main.viewport.getCamera().combined);
renderer.setTransformMatrix(batch.getTransformMatrix());
renderer.begin(ShapeRenderer.ShapeType.Line);
for (int i = 0; i < rect2.size(); i++)
{
renderer.setColor(Color.BLACK);
renderer.rect(rect2.get(i).getX(), rect2.get(i).getY(),
rect2.get(i).getWidth(), rect2.get(i).getHeight());
}
for (int i = 0; i < enemy.size(); i++)
{
renderer.setColor(Color.BLUE);
renderer.rect(enemy.get(i).getX(), enemy.get(i).getY(),
enemy.get(i).getWidth(), enemy.get(i).getHeight());
}
renderer.end();
}
解决方案
如果您查看 LibGDX 文档,您可以找到一个关于renderer
(如您所命名的)以及如何用不同颜色为多个形状着色的页面。通过使用renderer.begin()
你设置一个形状。然后,您给出该形状的所有属性(包括尺寸和颜色等)。一旦你使用renderer.end()
形状就会被绘制出来。然后,当您再次使用renderer.begin()
时,您定义了具有新属性的新形状,您可以在其中再次选择不同的尺寸和颜色。
来自 LibGDX 文档的示例代码: https ://libgdx.badlogicgames.com/ci/nightlies/docs/api/com/badlogic/gdx/graphics/glutils/ShapeRenderer.html
shapeRenderer.begin(ShapeType.Line);
shapeRenderer.setColor(1, 1, 0, 1);
shapeRenderer.line(x, y, x2, y2);
shapeRenderer.rect(x, y, width, height);
shapeRenderer.circle(x, y, radius);
shapeRenderer.end();
shapeRenderer.begin(ShapeType.Filled);
shapeRenderer.setColor(0, 1, 0, 1);
shapeRenderer.rect(x, y, width, height);
shapeRenderer.circle(x, y, radius);
shapeRenderer.end();
tl; dr:结束shapeRenderer
每个循环之后,并为另一个循环开始一个新的循环。
推荐阅读
- azure - 如何在 Databricks 上的 SparkListener 中使用 dbutils
- python - 从 Morningstart 检索股票数据
- android - 撰写具有透明背景的圆形按钮
- javascript - 如何在 Web 应用程序中创建带有可选输入字段的 fetch url
- ubuntu - Google Cloud VM 中的后台进程在一段时间后终止
- android - 在 Android Studio 中按住时如何更改按钮的背景颜色?
- selenium - 从 Selenium 3.11.0 升级到 4.0.0 找不到 Chrome 选项 setExperimentalOption 方法
- python - 当我尝试使用 Python 3.8 在 jupyter notebook 中安装 PySimpleGUI (4.53.0) 时,错误“没有返回名为‘PySimpleGUI’的模块
- html - 如何使用 CSS 设置背景图像?
- javascript - 添加时间戳 discord.js 存在