我正在Libgdx制作游戏,我希望在特定的时间间隔内显示和隐藏纹理并重复此过程。我可以使用Timer类吗? 请给我一些例子。
答案 0 :(得分:4)
我不确定你在这里做什么。你可以在渲染循环中有一个标志
Texture texture;
long lastFlip = 0;
long flipTime = 1000;
boolean display = false;
//..In your rendering loop
if(lastFlip+flipTime > System.currentTimeMillis()){
display = !display;
lastFlip = System.currentTimeMillis();
}
if(display){
spriteBatch.draw(texture,0,0);
}
如果你想在scene2d中使用内置动作系统,请参阅以下教程。 Tutorial。博客非常好,让您了解如何使用很多scene2d功能。由于对scene2d的更改,可能会有一些数据,但它会为您提供所需的想法。
答案 1 :(得分:0)
我确信您现在已经获得了解决方案,但您不应使用系统特定时间,而应使用已在render方法中使用的Gdx图形增量时间。然后将其与您想要显示纹理的时间进行比较。
答案 2 :(得分:0)
您绝对应该使用libGDX包装函数来读取时间,以避免在不同平台上最终不兼容。但是自己的代码可以非常简单:
if (TimeUtils.millis()%(SHOW_TIME+HIDE_TIME) < SHOW_TIME){
// render it
}
其中SHOW_TIME是您希望纹理显示的毫秒数,HIDE_TIME是您希望隐藏纹理的毫秒数。不需要额外的变量,使其比这更复杂。