3

我正在使用 libgdx 制作一个简单的游戏。我有一个 TextureAtlas,它有我正在尝试使用的 Ninepatch:9patch 我想用

图像保存为 menu.9.png

我正在使用以下代码:

Image bg = new Image(Room.iAtlas.findRegion("GUI/menu"));
bg.setBounds(guix-border,guiy-border,(border+radius)*2,(border+radius)*2);
batch.begin();
    bg.draw(s,1);
batch.end();

输出是这样的:
在此处输入图像描述

我真的不知道我做错了什么,但它应该更像这样(除了它上面有形状,但我没有添加那些):(
在此处输入图像描述 我手工创建的,我已经实际上从来没有 9patch 工作过,而且它没有船,因为我没有费心去编辑它们)

4

1 回答 1

2

看起来您的“九个补丁”没有被视为真正的九个路径,而是被视为“退化”的九个补丁(我之前遇到了一个非常相似的问题:Loading Nine-patch image as a Libgdx Scene2d Button background看起来很糟糕,虽然我没有使用TextureAtlas应该是解决方案的。)

基本上,当 Libgdx 从您的地图集中读取九个补丁时,它应该读取描述如何将图像分成 9 个图块的所有元数据(参见https://code.google.com/p/libgdx/ wiki/TexturePacker#NinePatches)。我看到几个地方可能会出错:

  1. 您的纹理不是有效的九补丁,元数据被忽略。(使用 Androiddraw9patch工具检查。)
  2. 您的纹理打包程序未.9.png正确处理文件。检查您的地图集的 .txt 文件的内容,并查看它是否具有与“menu.9.png”条目关联的“拆分”条目。
  3. 纹理查找只是返回TextureRegion九个补丁区域的常规包装器,而不是将其包装在NinePatch对象中。尝试使用TextureRegion.createNinePatch使其更明确。(我的印象是这没有必要,但也许是......)
于 2013-03-25T05:13:18.957 回答