簡體   English   中英

用Java集中處理輸入

[英]Handling inputs centrally in Java

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

您可以使其可觀察,只需將每個需要的類(例如玩家)注冊為觀察者。 因此,在發生輸入事件的情況下,將向所有觀察者類通知所按下的鍵。

看看這里有關觀察者模式的各種教程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM