我应该在InputListener对象的方法中实现操作吗?

时间:2012-03-08 15:42:57

标签: java slick2d

我正在使用MouseOverArea创建一个按钮。经过一些试验和错误后,我意识到我可以覆盖InputListener中的方法,以便在通知输入事件时执行特定操作。

例如,当光标位于组件上时,按下鼠标左键时执行操作。

@Override
public void mousePressed(int button, int mx, int my) {
    if (isMouseOver() && button == Input.MOUSE_LEFT_BUTTON) {
        // Some magic happens
    }
}

然而,由于没有Game对象,我无法做更改当前游戏状态的事情。我知道有很多方法可以解决这个问题,但我想知道Slick的方法是什么。

这些方法适合这种行为吗?

1 个答案:

答案 0 :(得分:1)

修改游戏状态的一种方法是使用布尔状态;哪个是保持游戏或玩家状态的布尔变量。例如:

boolean isMovingUp, isMovingLeft, isMovingRight, isMovingDown;

然后您可以将这些设置为true / false,具体取决于发生的鼠标或键盘事件,然后您的游戏类会读取这些变量,如下所示:

if (isMovingUp) {
  // do something
  isMovingUp = !isMovingUp;
}

希望有所帮助!