目前我在Android应用程序中使用libgdx来支持复杂的动画。在活动之间切换时,libgdx必须再次加载所有图像文件,这会使黑屏出现几秒钟。
在静态变量中保存图像可以在某些情况下解决它。但是由于静态变量中的数据可以随时被os清除,我无法冒险使用它。也不支持通过intent传递libgdx(纹理,图像actor)的对象,因为它们不实现parcelable类。我没有尝试传递位图并在运行时将其转换为pixmap。
那么,还有其他方法可以解决这个问题吗?
答案 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()...
从任何类调用它