无法从imageatlas加载图像

时间:2013-06-18 08:32:57

标签: android libgdx textures texturepacker

之前我使用简单的Texture来制作基于精灵的动画,但这并没有为不具备2的力量的图像提供支持。TexturePacker提供了加载所有图像的能力一次,然后从imageatlas获取所需的图像。

那就是说,我跟随了Libgdx维基的一些教程,它一直运行到装载部分。但我认为在渲染过程中,它会导致一些问题。这就是我将图像加载到桌面项目中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,即PACK_FILE?如果我不这样做,它会抛出File not found exception

我碰巧在pages-info文件夹中创建了image-atlases文件,并生成了以下文件:pages-info.png和'pages-info.atlas'。虽然pages-info文件为空,但.png.atlas文件分别包含图像和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。我在这里没有想法,任何帮助和想法?

1 个答案:

答案 0 :(得分: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"));

然后你可以通过文件名引用png而不用postfix。