【问题标题】:Handling inputs centrally in Java在 Java 中集中处理输入
【发布时间】:2014-09-09 22:12:00
【问题描述】:

我正在开发一个基本交互式程序的框架。在其中,我有一个 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;
    }
}

【问题讨论】:

    标签: java input frameworks mouseevent keyevent


    【解决方案1】:

    您可以使其可观察,只需将每个需要的类(如播放器)注册为观察者。因此,在输入事件的情况下,所有观察者类都会收到有关按键按下的通知。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-21
      • 2016-01-16
      • 2021-04-24
      • 1970-01-01
      • 2012-11-14
      • 2010-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多