我正在研究一个基本的交互式程序的框架。在其中,我有一个InputHandler类,该类在每次keyPressed或keyReleased事件(在主类中指定)发生时执行。 InputHandler有一个构造函数,该构造函数被加载到主类中。但是,我希望其他对象(例如Player类)在按下键时能够具有自己的行为。有没有一种方法可以包含单个Array或ArrayList,其中包含可以由另一个类加载而无需为每个类初始化InputListener的新实例的按下的键的值?请让我知道是否需要进一步说明。
这是我的InputHandler类的代码:
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
public class InputListener {
private ArrayList<Integer> keysPressed = new ArrayList<Integer>();
int mouseXPos, mouseYPos;
public InputListener(){
}
public void keyPressed(KeyEvent e){
keysPressed.add(e.getKeyCode());
}
public void keyReleased(KeyEvent e){
}
public ArrayList<Integer> getKeysPressed(){
return keysPressed;
}
public void mousePressed(MouseEvent e){
mouseXPos = e.getX();
mouseYPos = e.getY();
}
public int getMouseXPos(){
return mouseXPos;
}
public int getMouseYPos(){
return mouseYPos;
}
}
最佳答案
您可以使其可观察,只需将每个需要的类(例如玩家)注册为观察者。因此,在发生输入事件的情况下,将向所有观察者类通知所按下的键。
看一下有关观察者模式的各种教程,例如here。