Java Thread.sleep() 无法正常工作

标签 java android libgdx

我在使用延迟命令时遇到一些问题。

我想显示我的 Logo 2 秒钟,然后转到主菜单屏幕。但它的作用是显示黑屏几秒钟,然后转到主菜单(我可以看到我的 Logo 大约 1 毫秒):

public void render(float delta) {
    Gdx.gl.glClearColor(0, 0, 0.2f, 0);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    camera.update();
    game.batch.setProjectionMatrix(camera.combined);

    game.batch.begin();
    game.batch.draw(PGSImage, 0, 0);
    game.batch.end();

    try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        e.printStackTrace();
        Thread.currentThread().interrupt();
    }

    game.setScreen(new MainMenuScreen(game));
    dispose();
}

我做错了什么?

最佳答案

您不应该在 render() 方法中使用诸如 sleep() 之类的长方法,因为通常每秒调用 30 次(甚至更频繁)。

您可以将计时器添加到当前Screenshow()方法中:

@Override
public void show() {
    super.show();

    float delay = 2; // seconds

    Timer.schedule(new Task(){
        @Override
        public void run() {
            game.setScreen(new MainMenuScreen(game));
        }
    }, delay);
}

当您的第一个 Screen 显示时,它将被调用,然后它将在 2 秒后将您的 Screen 更改为 MainMenuScreen

这里Timercom.badlogic.gdx.utils.Timer

您还可以使用 render() 方法的 delta 参数来计算时间。看看this question了解更多详情。

关于Java Thread.sleep() 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28927206/

相关文章:

android - 实现照片共享应用程序的最佳方式

java - 为什么我不能在 html 上启动我的 LibGDX 项目?

java - LibGDX - 设置背景图像(静态)

Java正则表达式 - 获取字符串的特定部分

java - 我被困在测试用例的一个步骤上。 Selenium 网络驱动程序

Android - 如何接收快捷方式创建结果

安卓开发日志

java - Libgdx liquidfan 安卓错误

java - Jar2Exe 在保护 Java 类文件不被提取时如何工作

java - 如何关闭Android中的所有 Activity ?