gpt4 book ai didi

android - LibGDX 9 补丁图像不适用于 TextButtonStyle 和 TextureAtlas

转载 作者:搜寻专家 更新时间:2023-11-01 07:55:19 25 4
gpt4 key购买 nike

我正在尝试使用 LibGDX 创建一个简单的游戏。我正在尝试使用 9 Patch 图像作为菜单按钮的背景,但似乎忽略了图像的 9 Patch 质量。

我有两张图片,“active.9.png”和“rest.9.png”。这些是代表处于 Activity 或静止状态的按钮的方形图像。我用这个工具来创建它们:http://romannurik.github.io/AndroidAssetStudio/nine-patches.html所以我确信他们满足 9 Patch 的要求。下面是“active.9.png”的图片:

enter image description here

因为我正在使用 LibGDX 并且会有很多 Assets ,所以我想使用 TextureAtlas 来存储我的按钮图像。运行 TexturePacker 后,事情似乎仍然有效,因为图像已定义为“拆分”,我认为这表明它们已被识别为 9 个补丁文件。下面是“buttons.pack”:

buttons.png
format: RGBA8888
filter: Nearest,Nearest
repeat: none
active
rotate: false
xy: 1, 1
size: 226, 225
split: 59, 57, 58, 58
orig: 226, 225
offset: 0, 0
index: -1
rest
rotate: false
xy: 229, 1
size: 226, 225
split: 59, 57, 58, 58
orig: 226, 225
offset: 0, 0
index: -1

接下来我尝试从这个包创建一个 TextureAtlas,创建一个皮肤,并将图像加载到皮肤中。

    TextureAtlas buttonAtlas = new TextureAtlas("images/buttons/buttons.pack");
skin = new Skin();
skin.addRegions(buttonAtlas);
skin.add("rest", buttonAtlas.createPatch("rest"));
skin.add("active", buttonAtlas.createPatch("active"));

最后,我尝试将此皮肤应用到按钮上。我尝试了两种不同的方法..

方法一:

TextButtonStyle buttonStyle = new TextButtonStyle();
buttonStyle.up = new NinePatchDrawable(buttonAtlas.createPatch("rest"));
buttonStyle.down = new NinePatchDrawable(buttonAtlas.createPatch("active"));

输出 1:

enter image description here

方法二:

TextButtonStyle buttonStyle = new TextButtonStyle();
buttonStyle.up = new NinePatchDrawable(new NinePatch(new Texture(Gdx.files.internal("images/buttons/rest.9.png"))));
buttonStyle.down = new NinePatchDrawable(new NinePatch(new Texture(Gdx.files.internal("images/buttons/active.9.png"))));

输出 2:

enter image description here

虽然输出 2 看起来更好,但实际上似乎忽略了 9 个补丁质量,图像只是简单地拉伸(stretch)以适合。

我真的很感激任何帮助,我完全被难住了,似乎没有任何最新的教程或文档可用。

谢谢你的时间

最佳答案

我认为错误之一是图像线。

我用的是draw9patch,不知道是不是你用的工具,不知道。该工具位于:yourAndroid-sdk/tools/-->draw9patch“lookVertical Path”例如:

enter image description here

//变量类:

private TextureAtlas buttonsAtlas; 

private NinePatch buttonUpNine;

private TextButtonStyle textButtonStyle;

private TextButton textButton;

private BitmapFont font;

//在Show中添加或创建例如:

 buttonsAtlas = new TextureAtlas("data/ninePatch9/atlasUiScreenOverflow.atlas");

buttonUpNine = buttonsAtlas.createPatch("buttonUp");

font = new BitmapFont(); //** default font, for test**//
font.setColor(0, 0, 1, 1); //** blue font **//
font.setScale(2); //** 2 times size **//

textButtonStyle = new TextButtonStyle();
textButtonStyle.up = new NinePatchDrawable(buttonUpNine);

textButtonStyle.font = font;

textButton = new TextButton("test", textButtonStyle);

textButton.setBounds(100, 250, 250, 250);

在阶段添加例如:

 yourStage.addActor(textButton);

//

例如:如果你的按钮大于或等于 ninePath 的边,看起来像这样:(对不起我的英语希望你能理解我的意思)

textButton.setBounds(100, 250, 250, 250); enter image description here

看起来不错。

但如果少于 9 行,例如 100,请看这个:

textButton.setBounds(100, 150, 250, 100); enter image description here

如果您需要,可用于测试的 Assets :

//图集UiScreenOverflow.图集

atlasUiScreenOverflow.png
size: 232,231
format: RGBA8888
filter: Nearest,Nearest
repeat: none
buttonUp
rotate: false
xy: 2, 2
size: 230, 229
split: 49, 51, 49, 52
orig: 230, 229
offset: 0, 0
index: -1

//图集UiScreenOverflow.png

enter image description here

有几种使用 ninePatch 的方法,但这是我现在针对这种情况想到的一种方法,我希望它能很好地理解并能对您有所帮助。

编辑:我刚刚测试了您使用的工具并且运行良好。

你使用 textButton = new TextButton("test", textButtonStyle); ?

关于android - LibGDX 9 补丁图像不适用于 TextButtonStyle 和 TextureAtlas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28582934/

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