当我加载TextureAtlas时,补间动画会受到干扰。我希望在一个单独的线程中加载我的纹理Atlas。请你指导我在Libgdx中安全使用一个线程。任何示例/示例代码都非常受欢迎。
答案 0 :(得分:0)
最简单,最好的方法是使用LibGdx AssetLoader类。
请参阅https://github.com/libgdx/libgdx/wiki/Managing-your-assets
从页面...
加载特定资产很简单:
manager.load("data/mytexture.png", Texture.class); manager.load("data/myfont.fnt", BitmapFont.class); manager.load("data/mymusic.ogg", Music.class);
这些调用会将这些资产排入队列以进行加载。资产将是 按我们称为AssetManager#load()方法的顺序加载。一些 加载器允许您通过参数传递参数 AssetManager#负载()。假设我们要指定一个非默认的过滤器和 用于加载纹理的mipmapping设置:
TextureParameter param = new TextureParameter(); param.minFilter = TextureFilter.Linear; param.genMipMaps = true; manager.load("data/mytexture.png", Texture.class, param);
查看上面提到的装载机,了解它们的内容 参数。
到目前为止,我们只排队要加载的资产。 AssetManager没有 加载任何东西。为了解决这个问题,我们不得不打电话 AssetManager#update()不断地说,在我们的 ApplicationListener#render()方法:
public MyAppListener implements ApplicationListener { public void render() { if(manager.update()) { // we are done loading, let's move to another screen! } // display loading information float progress = manager.getProgress() ... left to the reader ... } }
只要AssetManager#update()返回false,您就知道它仍然存在 装载资产。要轮询具体的加载状态,您可以使用 AssetManager#getProgress(),返回0到1之间的数字 表示到目前为止加载的资产的百分比。还有其他 AssetManager中为您提供类似信息的方法,例如 AssetManager#getLoadedAssets()或AssetManager#getQueuedAssets()。您 必须调用AssetManager#update()来继续加载!