0

每次我的计时器运行时,计时器内部执行的代码都会运行得更快。为什么会这样?

这段代码实质上是在框架上移动标签(保存图像)。每次运行,图像移动得更快。

在此处输入图像描述

if (Player.direction == "west") {
            timerWest.start();
            isCasting = true;
            new Magic("westmagic.gif");

            timerWest.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    int x = Frame.fireMagicLabel.getX();
                    int y = Frame.fireMagicLabel.getY();
                    Frame.fireMagicLabel.setLocation(x - 1, y);
                    LiveUpdating.updateSpell();
                    CheckHits.spellHit();
                    Frame.frame.repaint();

                    if (Frame.fireMagicLabel.getX() <= tempWest) {
                        timerWest.stop();
                        new Magic("");
                        Frame.frame.repaint();
                        Frame.fireMagicLabel.setLocation(
                                Frame.redHealthLabel.getX(),
                                Frame.redHealthLabel.getX());
                        isCasting = false;
                    }
                }
            });
            Frame.frame.repaint();

        }

第一次运行时,计时器执行 x 速度。然后下一次运行它执行得越来越快,越来越快,越来越快。

4

2 回答 2

2

我认为你应该只添加一次动作监听器。

于 2013-05-15T14:53:39.893 回答
0

他们的 actionlistener 只需要添加一次。

此外,如果这不能解决问题,则在您尚未发布的代码中的某处应用速度,这可能不会被重置并添加到其上,这使其速度加倍。

于 2013-05-15T14:55:11.143 回答