Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用java制作动画下划线_Java - Fatal编程技术网

用java制作动画下划线

用java制作动画下划线,java,Java,这不是一个真正的动画,但我想要它,所以我有一个闪烁的下划线旁边我的文字。我希望这是为了模拟可以输入更多文本 e、 g.一秒钟是“uu”,另一秒钟是消失了 谢谢:D ps我尝试了一个想法,在那里我有一个while(flash)循环,在那里我让一个字符串等于“u”,然后让它等于“”,但这不起作用 while(flashing) { s = "_"; s = ""; } 提前谢谢你的帮助 编辑::: 这是我在游戏中显示字符串的方式: drawCenteredString(fontRe

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

e、 g.一秒钟是“uu”,另一秒钟是消失了

谢谢:D

ps我尝试了一个想法,在那里我有一个while(flash)循环,在那里我让一个字符串等于“u”,然后让它等于“”,但这不起作用

while(flashing) {
    s = "_";
    s = "";
}
提前谢谢你的帮助

编辑:::

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

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

就像@Vulcan所说的,你实际上不能用while循环来完成这个任务。您必须每秒左右“重新绘制”centeredString,一次使用下划线,下一次不使用下划线

您没有告诉我们您正在使用哪种图形库

如果你想做一些像闪烁下划线的事情,有两种方法,一种可能非常糟糕,另一种可能更好

第一个类似(伪编码):

第二个更好。 我假设您正在使用类似OpenGL的东西来绘制图形(如果我记得清楚的话,就像minecraft所做的那样)

私有长时间传递=0; 公共空白提取(长三角){ 时间传递+=增量

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(长增量)方法

我希望你能理解我试图向你解释的内容。
没有办法让你第一次写的东西起作用。

你是如何显示字符串的?你使用的是什么界面?这是一个简单的minecraft模型,我正在制作。但是你没有将变量的值传递给任何界面。甚至连System.out.drawCenteredString都没有(fontRenderer,“导弹命令中心”+s,宽度/2,40,0xffffff);你需要在将
s
设置为下划线和删除下划线之间添加一个睡眠,以便真正模拟闪烁。我有点得到了这个部分,但我到底要如何“重画”它?屏幕的其余部分是如何每隔10毫秒或以任何延迟“重画”的?每勾一次,我想它的10毫秒都会对它进行一点修改,它说如果(“u.”等于(t.substring(t.length()-1,t.length()))是一个空指针我编辑了我的文章,请参阅什么“delta”是有意的。也只是不复制粘贴我的代码,因为我注意的是伪代码,而不是代码本身。此外,您必须检查所有变量的名称,当然,您需要从正确的位置获取字符串值。我认为这类似于文本框,但您必须检查正确的方法才能获取文本并设置新文本。你有skype吗?它会更容易讨论,或者在其他地方进行适当的讨论,如果你有,请在skype上添加我:madcrazydrummaI鼓励你使用此网站,如果你真的需要讨论,可以聊天(页面顶部)还有很多关于动画和类似内容的帖子,我不明白我的答案中有什么不清楚;)
//metod where draw is called

delta = Sys.getTimer() - lastTimerGotten;
lastTimerGotten = Sys.getTimer();
draw(delta);

//etc etc