有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中集中处理输入

我正在为一个基本的交互式程序设计框架。在其中,我有一个InputHandler类,每次发生keyPressed或KeyRelease事件(在主类中指定)时都会执行该类。InputHandler有一个构造函数,它被加载到主类中;但是,我希望其他对象(例如Player类)在按下键时能够有自己的行为。有没有一种方法可以让一个数组或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;
    }
}

共 (1) 个答案

  1. # 1 楼答案

    您可以让它成为可观察的,只需将每个需要的类注册为观察者,就像玩家一样。因此,在输入事件的情况下,所有观察者类都会收到有关按键按下的通知

    看一看关于观察者模式的各种教程,如here