我想在一段时间后写出不同的文字。要做到这一点,我写了这个无效的代码
@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);
}
如果你帮我弄清楚我做错了解释会很好。
答案 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的教程以及如何使用它的游戏循环。