如何在Libgdx中的活动之间传递图像?

时间:2016-01-11 09:12:07

标签: android libgdx

目前我在Android应用程序中使用libgdx来支持复杂的动画。在活动之间切换时,libgdx必须再次加载所有图像文件,这会使黑屏出现几秒钟。

在静态变量中保存图像可以在某些情况下解决它。但是由于静态变量中的数据可以随时被os清除,我无法冒险使用它。也不支持通过intent传递libgdx(纹理,图像actor)的对象,因为它们不实现parcelable类。我没有尝试传递位图并在运行时将其转换为pixmap。

那么,还有其他方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

创建一个TextureFactory,它不会被清除,因为实例将在内存中保留。

示例:

公共类TextureFactory {

private static TextureFactory instance;

public static TextureFactory getInstance() {
    if (instance == null) {
        instance = new TextureFactory();
    }

    return instance;
}


public TextureFactory() {
    GameAssetManager.getInstance().getManager().update();
    GameAssetManager.getInstance().getManager().load("images/tiles/void.png", Texture.class);
    GameAssetManager.getInstance().getManager().load("images/tiles/dirty.png", Texture.class);
    GameAssetManager.getInstance().getManager().load("images/tiles/stone.png", Texture.class);
    GameAssetManager.getInstance().getManager().load("images/tiles/iron.png", Texture.class);
    GameAssetManager.getInstance().getManager().load("images/tiles/mythril.png", Texture.class);

    GameAssetManager.getInstance().getManager().load("images/creatures/dwarfWalk.gif", Texture.class);
    GameAssetManager.getInstance().getManager().finishLoading();
}


public Texture returnTileFromType(TileType tileType){

    switch (tileType) {
    case VOID:
        return GameAssetManager.getInstance().getManager().get("images/tiles/void.png", Texture.class);
    case DIRTY:
        return GameAssetManager.getInstance().getManager().get("images/tiles/dirty.png", Texture.class);
    case STONE:
        return GameAssetManager.getInstance().getManager().get("images/tiles/stone.png", Texture.class);
    case IRON_MINERAL:
        return GameAssetManager.getInstance().getManager().get("images/tiles/iron.png", Texture.class);
    case MITHRIL_MINERAL:
        return GameAssetManager.getInstance().getManager().get("images/tiles/mythril.png", Texture.class);
    default:
        return GameAssetManager.getInstance().getManager().get("images/tiles/void.png", Texture.class);
    }

}

public Texture returnTextureDorf(){
    return GameAssetManager.getInstance().getManager().get("images/creatures/dwarfWalk.gif", Texture.class);
}}

并使用TextureFactory.getInstance()...

从任何类调用它