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