0

以前我使用 simpleTexture用于基于 sprite 的动画,但它不支持不支持 2 的图像。TexturePacker提供了一次加载所有图像的能力,然后从imageatlas.

也就是说,我遵循了 Libgdx wiki 中的几个教程,并且在加载部分之前它运行良好。但我想在渲染过程中,它会引起一些问题。这就是我将图像加载到texturepacker我的桌​​面项目中的方式:

private static final String INPUT_DIR = "../Drop-Android/assets/images";
    private static final String OUTPUT_DIR = "../Drop-Android/assets/image-atlases";
    private static final String PACK_FILE = "pages-info";
    public static void main(String[] args){
        LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
        cfg.title = "Drop";
        cfg.width = 800;
        cfg.height = 480;

        Settings settings = new Settings();
        settings.maxWidth = 512;
        settings.maxHeight = 512;
        TexturePacker2.process(settings, INPUT_DIR, OUTPUT_DIR, PACK_FILE);
        new LwjglApplication(new Drop(), cfg);
    }

问题:我必须在 images-atlases 文件夹pages-info中手动创建 ie吗?PACK_FILE如果我不这样做,它会抛出File not found exception.

我碰巧在文件夹中创建pages-info了文件,image-atlases并生成了以下文件:pages-info.png和“pages-info.atlas”。而pages-infofiles 为空,.png.atlasfiles 分别具有图像和 JSON 图像数据。

这是我用来提取文件(为空)textureregions的内容:pages-info

TextureAtlas ta = new TextureAtlas(Gdx.files.internal("image-atlases/pages-info"));
        imageOneRegion = ta.findRegion("image1.png");
        imageTwoRegion = ta.findRegion("image2.png");

正如预期的那样,它nullpointerexception在绘制textureregion. 我的想法在这里用完了,有什么帮助和想法吗?

4

1 回答 1

2

如果您使用 Texturepacker 生成静态图像图集,它还将生成必要的信息页面。(libgdx wiki),它被称为 packName.atlas (从命令行尝试)

java -cp gdx.jar;extensions/gdx-tools/gdx-tools.jar com.badlogic.gdx.tools.imagepacker.TexturePacker2 inputDir [outputDir] [packFileName]

如果要加载图像,您应该只加载 atlas 文件,它不应该是 json 文件,而是自定义文件格式。

TextureAtlas ta = new TextureAtlas(Gdx.files.internal("image-atlases/<yourAtlasName>.atlas"));

然后你可以通过它们的文件名来引用 pngs 而没有后缀。

于 2013-06-18T11:53:13.380 回答