libGDX - 围绕图像创建边框

时间:2013-12-26 15:03:21

标签: java textures libgdx

我可以在图像周围制作边框吗? 我在2D中有很多块,当玩家用鼠标悬停在其中一个上时,我想在纹理/图像周围显示边框。

这就是我实际绘制块的方式(我认为它不相关,但也许会有所帮助):

batch.draw(map.map[mapPos].TEXTURE, (mapPosX * Block.WIDTH), (mapPosY * Block.HEIGHT), Block.WIDTH, Block.HEIGHT);

是否可以使用代码或者我应该使用纹理和边框创建单独的图像? 有什么想法吗?

2 个答案:

答案 0 :(得分:4)

您可以先尝试使用ShapeRenderer绘制边框,然后使用batch.draw覆盖边框。这完全是在代码中完成的,不使用纹理。下面的代码添加了蓝色边框。

render() batch.end()之后添加以下内容。

batch.end(); // Add the following after this line

sr.setProjectionMatrix(camera.combined);
sr.begin(ShapeType.Line);
sr.setColor(new Color(0,0,1,0));
sr.rect((mapPosX * Block.WIDTH), (mapPosY * Block.HEIGHT), Block.WIDTH, Block.HEIGHT));
sr.end();

当然,您需要在ScreenApplicationListener实施中初始化ShapeRenderer。只需在声明和初始化批处理的代码中执行此操作即可。

在你的游戏课程中:

SpriteBatch batch; //Put the following below this line
ShapeRenderer sr;

在你的构造函数中:

batch = new SpriteBatch(); //Put the following below this line
sr = new ShapeRenderer();

编辑:我重写了这个函数,以便在绘制纹理批处理后绘制形状。

答案 1 :(得分:4)

我会推荐这两种方法中的一种:

  • 制作两个不同的图像,一个带边框,一个没有 - 适用于需要此悬停功能的每个图像;这是通常实现按钮图像的方式 - 正常,按下,悬停或其他任何
  • 的单独图像
  • 如果你有很多不同但大小相同的图像(或你设置的“块”)需要这个边框,如果你实现一个“边框纹理”,它就会减少工作量,减少内存,然后渲染它当鼠标悬停在它上面时,你的“块”的原始纹理

这是我个人的观点,但我从不喜欢libgdx中的形状渲染。我忘了如何使用形状渲染器,但是如果需要像nedR的答案那样设置投影矩阵,我描述的方式也会更快。