libgdx引擎是专门为游戏设计的引擎,它提供了一个非常有用的工具,即为AssetManager,简单的说就是一个资源异步加载和资源自动管理类
目前支持Pixmaps、Textures、BitmapFonts、TextureAtlases、TiledAtlases、TileMapRenderers、Music、Sound这些类型的资源。
使用方法:
- assetManager.load("data/img/bg.png", Texture.class);
- assetManager.load("data/font/chinese.fnt", BitmapFont.class);
- assetManager.load("data/music/op_head.ogg", Music.class);
- assetManager.load("data/pack/task1.pack", TextureAtlases.class);
- Music instances 通过 MusicLoader Sound instances 通过 SoundLoader
Update方法才会加载资源
当其为True时即加载完成,为False就表示还在加载。
比如当前加载到百分之多少了以方便绘制进度条,可以使用getProgress方法,该方法返回一个0到1之间的数字。
synchronourAssetLoader同步资源加载器
asynchronourAssetLoader异步资源加载器
前者加载任何资源都在渲染进程中,后者加载资源在另外一个线程中。
所谓异步加载就是另开一个线程而不在渲染线程里面,同步就是在render()线程里加载咯…而这两种加载方式相对UI线程都是异步的。
Animation animation;
//设置的是0.06s一帧
- animation = new Animation(0.06f, walksFrame);
//查看哪些还未加载(Queued)队列 /已载入完成的资源的数量(Loaded)
if(!assetManager.update()){
System.out.println("QueuedAssets:"+assetManager.getQueuedAssets());
System.out.println("Loaded:"+assetManager.getLoadedAssets());
System.out.println("当前百分比:"+assetManager.getProgress());
}
if(!assetManager.update()){
System.out.println("QueuedAssets:"+assetManager.getQueuedAssets());
System.out.println("Loaded:"+assetManager.getLoadedAssets());
System.out.println("当前百分比:"+assetManager.getProgress());
}
stateTime+=Gdx.graphics.getDeltaTime(); //得到下一帧 currentFrame=animation.getKeyFrame(stateTime, true); //以(0,0)绘制为起点(左下角为0,0)画出动画,大小128*128
batch.draw(currentFrame,240, 400,128,128);