gpt4 book ai didi

java - 纹理未显示在应用程序中

转载 作者:行者123 更新时间:2023-11-29 05:09:31 27 4
gpt4 key购买 nike

在研究框架 libgdx 的过程中,我发现了一种构建项目的绝妙方法。这是我加载纹理并显示它的示例。

AssetManager单例模式的实现

public class GameAsssetManager extends AssetManager {

private static GameAsssetManager instance;

public static GameAsssetManager getInstance(){
if(null == instance)
instance = new GameAsssetManager();

return instance;
}

public void init(){}
}

加载图片

    public class LoadScreen implements Screen{

private void loadAssets(){
GameAsssetManager.getInstance().load("badlogic.jpg",Texture.class);
}

@Override
public void show() {
GameAsssetManager.getInstance().init();
loadAssets();
}

@Override
public void render(float delta) {
//Метод update возвращает true в том случаи, если все ресурсы загружены
if(GameAsssetManager.getInstance().update()){
ScreenManager.getInstance().show(CustomScreen.GAME);
}
}
...
}

最后显示图片

public class GameScreen implements Screen {
...
@Override
public void show() {
batch = new SpriteBatch();
texture = GameAsssetManager.getInstance().get("badlogic.jpg");
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(0, 1, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
batch.draw(
texture,
Gdx.graphics.getWidth()/2 - texture.getWidth()/2,
Gdx.graphics.getHeight()/2 - texture.getHeight()/2
);
batch.end();
}
...

所以问题如下。编译应用程序时,一切正常。但是如果你关闭应用程序并重新启动安装的应用程序,在应该显示纹理的地方会显示黑色方 block 。

最佳答案

尝试对您的 GameAsssetManager 类实现 Disposable 并释放 dispose() 方法中的所有资源。对于我的 Assets 管理器,我也使用单例,而且我没有任何内存问题和其他问题。我的意思是,在“onPause”、“onStop”、“onDestroy”等生命周期方法中发布。并确保在再次启动应用程序时重新加载资源。

关于java - 纹理未显示在应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29135636/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com