所以我每次碰到空格键时都试图让这个矩形执行跳跃运动。当我点击空格键时,动作很好。它上升并回落,但运动不是很流畅。它只是立即达到高点,然后立即回到地面。我该如何解决?这是跳跃运动的代码(跳转是按空格键时调用的,而秋天是在空格键的释放上):
class Jump extends AbstractAction
{
public void actionPerformed(ActionEvent e)
{
while(time<2.5)
{
time+=0.1;
py-=5-(2*(time));
if(py>=300)
{
py=300;
py-=0;
}
repaint();
System.out.println(time);
}
}
}
class Fall extends AbstractAction
{
public void actionPerformed(ActionEvent e)
{
while(time>0)
{
time-=0.1;
py+=5-(2*(time));
if(py>=300)
{
py=300;
py-=0;
}
repaint();
}
}
}
答案 0 :(得分:0)
我猜是某个时钟调用了actionPerformed()?我认为问题是,在actionPerformed中,你已经添加了自己的while循环。因此,即使actionPerformed每秒只调用X次,while循环也会更新你的变量(time,py等)并尽可能快地重新绘制屏幕。如果不了解你正在使用的界面(即我不知道“时间”和“py”来自哪里),我真的无法给你正确的代码,但也许可以尝试这样的事情:
class Jump extends AbstractAction
{
public void actionPerformed(ActionEvent e)
{
if (time < 2.5)
{
time += 0.1;
py -= 5-(2*(time));
if (py > 300) py = 300;
if (py < 0) py = 0;
repaint();
}
}
}
class Fall extends AbstractAction
{
public void actionPerformed(ActionEvent e)
{
if (time > 0)
{
time -= 0.1;
py += 5-(2*(time));
if (py > 300) py = 300;
if (py < 0) py = 0;
repaint();
}
}
}