【问题标题】:Ball doesn't move around screen球不在屏幕上移动
【发布时间】:2014-01-22 18:06:38
【问题描述】:

您好,我正在创建一个迷你网球游戏,但由于某种原因,球在屏幕上没有移动。我设法创造了蝙蝠,它们都移动了。球需要从球棒上反弹并朝任何方向移动。有什么想法吗??

【问题讨论】:

  • 那么,你在哪里调用Ball类的move方法呢?
  • 嗨,我知道我还没有完成这个堡垒,这可能是我刚接触 java 不知道在绘图面板类中调用它的原因
  • 所以,你需要考虑在游戏中什么动作会开始球的移动。例如,是否有一个球员应该按下的键来发球?我认为在编写更多代码之前,您需要考虑一下游戏应该如何运行。
  • 嗨 @DavidWallace 感谢您的建议,我认为玩家按下空格键会触发球,那么我需要像键绑定一样执行此操作吗?
  • 因此您需要某种标志来指示球是否在比赛中。当他们按下空格键时,如果未设置标志,则应设置标志,创建Ball 对象,并启动某种计时器,定期调用move 方法。

标签: java swing jpanel paintcomponent


【解决方案1】:

动画需要的是javax.swing.Timer。这是基本结构

Timer(int delay, ActionListener listener)

每隔这么多毫秒,计时器将触发一个ActionEvent,它会在您传递给它的ActionListener 中被监听。因此,在您的情况下,您需要调用 ball.move() 方法来让 ball 进行动画处理。

下面的代码是我添加到MyDrawingPanel 的构造函数的all,它的动画效果很好。注意:我在昨天发布的另一个问题中使用了您的代码,因此如果您进行了更改,我无法保证与您当前的代码相同的结果。

    Timer timer = new Timer(20, new ActionListener(){
        public void actionPerformed(ActionEvent e) {
            ball.move();
            repaint();
        }
    });
    timer.start();

您当然可以有一个单独的按钮,您可以在其中调用timer.start()timer.stop(),也可以有一个重置按钮,您可以将球设置到默认位置。但就目前而言,以上内容应该让您的动画栩栩如生。

【讨论】:

  • 伙计,你对我的问题很有帮助,以前我试过调用球类的 move 方法但我没有得到任何结果,因为我没有添加时间,我没有'不记得绘画方法,我的 gui 中有一个新的游戏按钮,但我没有让它做任何事情,一旦点击任何想法,我需要它重新启动游戏到原始状态?
  • 你可以从游戏按钮. Declare the timer as a global variable in the MyDrawingPanel`类中调用timer.start()。如果游戏按钮在不同的类中,则为计时器设置一个吸气剂。然后你可以在游戏开始按钮的方法中做类似Timer timer = myDrawingPanel.getTimer(); timer.start();的操作。如果游戏开始按钮与MyDrawingPanel在同一个类中,那么您只需将其声明为全局变量并调用timer.start()
  • 我建议你也看看渲染的types。如需更多信息,请参阅this
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-21
  • 2016-05-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多