在java中制作动画下划线

时间:2013-08-24 04:03:00

标签: java

它不是真正的动画,但我想要它,所以我的文字旁边有一个闪烁的下划线。我希望这可以模拟可以输入更多文本..

e.g。一秒钟它'_'而另一秒它消失了......

谢谢:D

ps 我尝试了一个想法,我有一段时间(闪烁)循环,并在那里我做了一个字符串等于'_',然后使它等于''但是没有工作..

while(flashing) {
    s = "_";
    s = "";
}

提前感谢您的帮助!

EDIT :::

这就是我在游戏中显示字符串的方式:

drawCenteredString(fontRenderer, "Missile Command Center" + s, width / 2, 40, 0xffffff);

2 个答案:

答案 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)方法。

我希望你明白我想要解释你的是什么。 没有办法让你第一次写作的东西。