0

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

例如,一秒钟它的'_',另一秒钟它消失了..

感谢:D

ps我尝试了一个想法,我有一个while(闪烁)循环,在那里我让一个字符串等于'_',然后让它等于'',但这没有用..

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

我在这里先向您的帮助表示感谢!

编辑:::

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

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

2 回答 2

0

就像@Vulcan 说的那样,你实际上不能用 while 循环来做到这一点。您必须每隔一秒左右“重绘”centeredString,一次带有下划线,下一次不带下划线

于 2013-08-24T04:14:14.600 回答
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 之类的东西来绘制图形(如果我没记错的话,就像我的世界一样)。

私人长时间通过 = 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) 方法。

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

于 2013-08-24T08:38:35.673 回答