问题
Trying to create a loading screen, I have a Assets
class and a LoadingScreen
class which is called immediately from:
this.setScreen(new LoadingScreen(this));
At loading screen I have this:
public class LoadingScreen implements Screen{
final Game1 game;
Sprite LdScreen;
OrthographicCamera camera;
public LoadingScreen(Game1 gam){
game=gam;
camera = new OrthographicCamera();
camera.setToOrtho(false, 1920, 1080);
}
public void show() {
Texture LdscreenTexture = new Texture(Gdx.files.internal("data/Background.png"));
LdScreen = new Sprite (LdscreenTexture);
Assets.manager.finishLoading();
}
@Override
public void render(float delta) {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
camera.update();
game.batch.setProjectionMatrix(camera.combined);
game.batch.begin();
game.batch.draw(LdScreen, 0,0);
game.batch.end();
Assets.manager.update();
if(Assets.manager.update() == true){
game.setScreen(new MainMenuScreen(game));
}
}
But it always returns and error, as though it tries to move to MainMenuScreen
class and the asset isn't loaded, which it should be if Assets.manager.update()
is true right?
Why is this a problem?
回答1:
this simple example
.//Add in your Class Game1
Variable Class
private AssetManager yourAssetManager;
Created Method
yourAssetManager = new AssetManager();
Get Set Method
public AssetManger getManger(){
return this.yourAssetManager;
}
.
public class LoadingScreen implements Screen{
final Game1 game;
Sprite LdScreen;
OrthographicCamera camera;
AssetManager yourAssetManager;
public LoadingScreen(Game1 gam){
game=gam;
this.yourAssetManager = game.getManager();
camera = new OrthographicCamera();
camera.setToOrtho(false, 1920, 1080);
}
public void show() {
Use yourAssetManager.load(.... for load asset
yourAssetManager.load("data/Background.png", Texture.class);
Texture LdscreenTexture = new Texture(Gdx.files.internal("data/Background.png"));
LdScreen = new Sprite (LdscreenTexture);
//Assets.manager.finishLoading();
}
@Override
public void render(float delta) {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
camera.update();
game.batch.setProjectionMatrix(camera.combined);
game.batch.begin();
game.batch.draw(LdScreen, 0,0);
game.batch.end();
//Assets.manager.update();
if(yourAssetManger.update()){
game.setScreen(new MainMenuScreen(game));
}
}
read this link https://github.com/libgdx/libgdx/wiki/Managing-your-assets i,m not right now test sorry.
来源:https://stackoverflow.com/questions/27462904/loading-screen-libgdx-assetmanager