如何在每个间隔后写出不同的文本?

时间:2014-03-21 11:40:11

标签: android libgdx

我想在一段时间后写出不同的文字。要做到这一点,我写了这个无效的代码

@Override
public void render() {      
    Gdx.gl.glClearColor(1,1,1,1);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
    float delay = 5; // seconds

    Timer.schedule(new Task(){
        @Override
        public void run() {
            batch.begin();
            font.draw(batch, texts[flag],200, 200);
            batch.end();
        }
    }, delay,5);
}

如果你帮我弄清楚我做错了解释会很好。

1 个答案:

答案 0 :(得分:1)

您没有正确使用这些东西。每个游戏循环调用render()(每秒约60次,具体取决于FPS)。所以你每秒安排新的TimerTask 60次...... 您draw()内的TimerTask也是Timer,所以只有Screen事件被触发。 你看到一个白色的屏幕,因为你告诉Gdx.gl.glClearColor(1,1,1,1); Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);每个渲染循环都用白色涂抹自己:
Color(1, 1, 1, 1)

请注意,show()为白色且完全不透明。

你应该做的是:

在您的create中,如果这是您的屏幕类或ApplicationListener,如果这是您的Game / float delay = 5; // seconds text = "This is the 1. text"; // text is a member variable (String) nb = 1; // nb is a member variable (int) Timer.schedule(new Task(){ @Override public void run() { nb++; text = "This is the " + nb + ". text"; } }, delay, 5); 课程,则添加以下内容:

public void render() {      
    Gdx.gl.glClearColor(1,1,1,1);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
    batch.begin();
    font.draw(batch, text, 200, 200);
    batch.end();
}

这会每隔5秒更改一次文本,从“这是1.文本”到“这是2.文本”到...

在你的渲染中,你需要绘制()它:

{{1}}

这应该有效。我建议阅读一些关于libgdx的教程以及如何使用它的游戏循环。