本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: https://www.huangyunkun.com/2016/06/06/use-annotationassetmanager-in-libgdx/
Libgdx对于资源管理提供了AssetManager来做资源的管理,如果你需要使用它那么你就不得不使用这样的代码
manager.load("data/mytexture.png", Texture.class); manager.load("data/myfont.fnt", BitmapFont.class); manager.load("data/mymusic.ogg", Music.class);
其中的文件路径是字符串。然后在你使用的地方
Texture tex = manager.get("data/mytexture.png", Texture.class); BitmapFont font = manager.get("data/myfont.fnt", BitmapFont.class);
这样使用其实蛮不方便的,如果你把文件路径作为一个全局变量的话,其实很多代码是重复的。
而AnnotationAssetManager提供了反射的方法来完成这个工作
package com.huangyunkun.hundred; import com.badlogic.gdx.graphics.Texture; import net.dermetfan.gdx.assets.AnnotationAssetManager; public class Assets { @AnnotationAssetManager.Asset(Texture.class) public static final String ball = "ball.png"; }
比如有一个球的图片,那么只需要声明一个字符串。然后加载的时候直接传入这个类本身,由加载器自己去寻找所有需要加载的资源即可。
public class QuickStartScreen extends ScreenAdapter { private Stage stage; private AnnotationAssetManager annotationAssetManager; public QuickStartScreen() { this.annotationAssetManager = new AnnotationAssetManager(); this.stage = new Stage(new StretchViewport(960, 480)); this.annotationAssetManager.load(Assets.class); this.annotationAssetManager.finishLoading(); this.stage.addActor(new Image(this.annotationAssetManager.get(Assets.ball, Texture.class))); } @Override public void render(float delta) { GdxUtilities.clearScreen(); stage.draw(); } }
Asset类本身还可以根据需要拆成不同的小类。
而@Asset注解还支持参数,比如
@Asset(value = Texture.class, params = "textureParams") public static final String grass = "img/grass.png";
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: https://www.huangyunkun.com/2016/06/06/use-annotationassetmanager-in-libgdx/