将TexturesAtlas加载到单独的线程中

时间:2015-05-29 07:23:58

标签: java android libgdx

当我加载TextureAtlas时,补间动画会受到干扰。我希望在一个单独的线程中加载我的纹理Atlas。请你指导我在Libgdx中安全使用一个线程。任何示例/示例代码都非常受欢迎。

1 个答案:

答案 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()来继续加载!