它不是真正的动画,但我想要它,所以我的文字旁边有一个闪烁的下划线。我希望这可以模拟可以输入更多文本..
e.g。一秒钟它'_'而另一秒它消失了......
谢谢:D
ps 我尝试了一个想法,我有一段时间(闪烁)循环,并在那里我做了一个字符串等于'_',然后使它等于''但是没有工作..
while(flashing) {
s = "_";
s = "";
}
提前感谢您的帮助!
EDIT :::
这就是我在游戏中显示字符串的方式:
drawCenteredString(fontRenderer, "Missile Command Center" + s, width / 2, 40, 0xffffff);
答案 0 :(得分:0)
就像@Vulcan所说,你实际上不能用while循环来做这件事。你必须每秒左右'重绘'centeredString,一次使用下划线,下一次没有下划线
答案 1 :(得分:0)
您没有告诉我们您正在使用哪种图形库。
如果你想做一些闪烁的下划线,有两种方法,一种可能非常糟糕,另一种可能更好。
第一个就像(伪编码):
while(flashing){
textView.setText(textView.getText()+"_"); // I am assuming that you are using a text view, take this as pseudocode, you can do to whatever you want.
sleep(500); //that is half a second
textView.setText(textView.getText().substr(0,textView.getText().length()-1));
sleep(500);
}
第二个更好。 我假设你正在使用像OpenGL这样的东西来绘制图形(如果我记得很清楚,就像我的世界那样)。
private long timePassed = 0; public void draw(long delta){ timePassed + = delta;
String t = textView.getText();
if(timepassed > blinkingSpeed){
timepassed = 0;
if("_".equals(t.substr(t.length()-1,t.length()))){
//The last char is the underscore, i remove it.
textView.setText(t.substr(0,t.length()-1));
}else{
//The last char isn't an underscore. I add it.
textView.setText(t + "_");
}
}
delta是我们上次完成循环与实际时间之间的差异。 所以在调用draw方法时你应该有类似的东西
//metod where draw is called
delta = Sys.getTimer() - lastTimerGotten;
lastTimerGotten = Sys.getTimer();
draw(delta);
//etc etc
显然,每个渲染帧都应该调用draw(long delta)方法。
我希望你明白我想要解释你的是什么。 没有办法让你第一次写作的东西。