游戏跳转Java

时间:2014-08-25 02:07:39

标签: java

所以我每次碰到空格键时都试图让这个矩形执行跳跃运动。当我点击空格键时,动作很好。它上升并回落,但运动不是很流畅。它只是立即达到高点,然后立即回到地面。我该如何解决?这是跳跃运动的代码(跳转是按空格键时调用的,而秋天是在空格键的释放上):

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();
                }

            }
        }

1 个答案:

答案 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();
            }

        }
    }