【LWJGL教程】四、输入处理

四、输入处理

  • 在LWJGL中,使用Set***Callback进行输入处理。以下是所有的输入处理(第一个参数为窗口,第二个为匿名函数),当用户进行如下操作时调用匿名函数

    GLFW.glfwSetWindowCloseCallback(window, null); // 窗口关闭
    GLFW.glfwSetWindowContentScaleCallback(window, null); // 窗口比例更改
    GLFW.glfwSetWindowFocusCallback(window, null); // 窗口获得焦点
    GLFW.glfwSetWindowIconifyCallback(window, null); // 窗口最小化
    GLFW.glfwSetWindowMaximizeCallback(window, null); // 窗口最大化
    GLFW.glfwSetWindowPosCallback(window, null); // 窗口坐标改变
    GLFW.glfwSetWindowRefreshCallback(window, null); // 窗口刷新
    GLFW.glfwSetWindowSizeCallback(window, null); // 窗口大小改变
    GLFW.glfwSetKeyCallback(window, null); // 按键按下
    GLFW.glfwSetCharCallback(window, null); // (受修饰符影响)字符输入
    GLFW.glfwSetCharModsCallback(window, null); // (不受修饰符影响)字符输入
    GLFW.glfwSetMouseButtonCallback(window, null); // 鼠标按下
    GLFW.glfwSetCursorPosCallback(window, null); // 鼠标指针位置改变
    GLFW.glfwSetCursorEnterCallback(window, null); // 鼠标指针进入窗口
    GLFW.glfwSetScrollCallback(window, null); // 窗口滚动
    GLFW.glfwSetDropCallback(window, null); // 文件拖入窗口
    
  • 在engine包下创建io包,并新建Input类和各抽象类

public GLFWWindowCloseCallback closeCallback;
public GLFWWindowContentScaleCallback contentScaleCallback;
public GLFWWindowFocusCallback focusCallback;
public GLFWWindowIconifyCallback iconifyCallback;
public GLFWWindowMaximizeCallback maximizeCallback;
public GLFWWindowPosCallback posCallback;
public GLFWWindowRefreshCallback refreshCallback;
public GLFWWindowSizeCallback sizeCallback;
public GLFWKeyCallback keyCallback;
public GLFWCharCallback charCallback;
public GLFWCharModsCallback charModsCallback;
public GLFWMouseButtonCallback mouseButtonCallback;
public GLFWCursorPosCallback cursorPosCallback;
public GLFWCursorEnterCallback cursorEnterCallback;
public GLFWScrollCallback scrollCallback;
public GLFWDropCallback dropCallback;
  • 在构造函数中实现这些类
public Input() {
   
    closeCallback = new GLFWWindowCloseCallback() {
   
        @Override
        public void invoke(long window) {
   
            // window 窗口
        }
    };
    contentScaleCallback = new GLFWWindowContentScaleCallback() {
   
        @Override
        public void invoke(long window, float xscale, float yscale) {
   
            // window 窗口 
            // xscale x方向的缩放
            // yscale y方向的缩放
        }
    };
    focusCallback = new GLFWWindowFocusCallback() {
   
        @Override
        public void invoke(long window, boolean focused) {
   
            // window 窗口 
            // focused 是否获得焦点
        }
    };
    iconifyCallback = new GLFWWindowIconifyCallback() {
   
        @Override
        public void invoke(long window, boolean iconified) {
   
            // window 窗口 
            // iconified 是否最小化
        }
    };
    maximizeCallback = new GLFWWindowMaximizeCallback() {
   
        @Override
        public void invoke(long window, boolean maximized) {
   
            // window 窗口 
            // maximized 是否最大化
        }
    };
    posCallback = new GLFWWindowPosCallback() {
   
        @Override
        public void invoke(long window, int xpos, int ypos) {
   
            // window 窗口 
            // xpos x坐标
            // ypos y坐标
        }
    };
    refreshCallback = new GLFWWindowRefreshCallback() {
   
        @Override
        public void invoke(long window) {
   
            // window 窗口 
        }
    };
    sizeCallback = new GLFWWindowSizeCallback() {
   
        @Override
        public void invoke(long window, int width, int height) {
   
            // window 窗口 
            // width 新宽度
            // height 新高度
        }
    };
    keyCallback = new GLFWKeyCallback() {
   
        @Override
        public void invoke(long window, int key, int scancode, int action, int mods) {
   
            // window 窗口 
            // key 按键类型
            // scancode 按键的系统专用扫描码
            // action 按下的模式(释放、按下、反复)
            // mods 修饰符
        }
    };
    charCallback = new GLFWCharCallback() {
   
        @Override
        public void
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值