【问题标题】:Asynchronously Loading Screen Libgdx异步加载屏幕 Libgdx
【发布时间】:2014-12-15 20:53:16
【问题描述】:

我将所有资产存储在一个类中并在游戏开始时加载它们,我正在尝试在单独的类中创建一个加载屏幕。

资产管理器类:

public class Assets {


    public static AssetManager manager = new AssetManager();

    public static void queueLoading() {
        (..)
        manager.load("sound/buttonpress.mp3", Sound.class);
        (..)
        while(!manager.update())
        {
            System.out.println("Loaded: " + manager.getProgress() *100 + "%");
        }

    }
    public static boolean update() {
        return manager.update();
    }
}

加载屏幕类:

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.queueLoading();
        }

    @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.queueLoading();
        if(Assets.update()){
            game.setScreen(new MainMenuScreen(game));
            System.out.print("hllasgsgsag");
        }
    Assets.update();
    }
    @Override
    public void resize(int width, int height) {

    }

    @Override
    public void hide() {

    }

    @Override
    public void pause() {

    }

    @Override
    public void resume() {

    }

    @Override
    public void dispose() {

    }
}

问题:

当我在控制台中运行它时,我得到了进度百分比,但在加载时屏幕保持黑色(卡在 Assets 类),然后它闪烁到加载屏幕,并更改为 MainMenuScreen。 加载资源时如何停止黑屏?

【问题讨论】:

标签: java android libgdx


【解决方案1】:

您遇到的问题是因为您正在立即加载所有资产,这不是在不同的线程中完成的,而是在显示屏幕时运行。我建议使用manager.update(delta),它应该在您的游戏循环中调用并获取更新百分比。完整的源代码对我来说有点难以解释,但我在以前的项目中做过类似的事情,源代码可以在下面的 GitHub 上找到:

资产类: https://github.com/basimkhajwal/NinjaTower/blob/master/NinjaTower/core/src/net/net63/codearcade/NinjaTower/utils/Assets.java

载入画面: https://github.com/basimkhajwal/NinjaTower/blob/master/NinjaTower/core/src/net/net63/codearcade/NinjaTower/screens/MainMenuScreen.java

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    • 1970-01-01
    相关资源
    最近更新 更多