zoukankan      html  css  js  c++  java
  • 9.2.1、Libgdx的输入处理之轮询

    (官网:www.libgdx.cn

    轮询是检测输入设备的当前状态,比如特定的按键按下,屏幕第一个手指的位置等等。这是一个快速简单的处理用户输入的方式,并且应用到很多的游戏中。

    注意:如果你处理轮询,可能会丢失事件。如果最好采用事件处理。

    轮询键盘

    轮询键盘输入可以通过简单的一行代码实现:

    boolean isAPressed = Gdx.input.isKeyPressed(Keys.A);

    传递给方法的值就是我们上一篇提到的Key Code,可以查阅上一篇文章查看相关键值。

    轮询触摸或鼠标

    轮询触摸和鼠标输入,这里有一系列的方法。要检测一个或多个点按下(等同鼠标单击),可以使用如下代码:

    boolean isTouched = Gdx.input.isTouched();

    对于多点触摸来说可以判断某一个触摸点是否释放与否:

    // 返回当前是否被触摸
    boolean firstFingerTouching = Gdx.input.isTouched(0);
    boolean secondFingerTouching = Gdx.input.isTouched(1);
    boolean thirdFingerTouching = Gdx.input.isTouched(2);

    每个手指在屏幕上按下都会获得一个指针索引。第一个手指获得0,接下来为1等等。如果一个手指离开屏幕。指针索引将被释放。

    • 第一个手指按下> 指针索引为0.

    • 第二个手指按下>指针索引为1

    • 第三个手指按下>指针索引为2

    • 第二个手指释放>指针索引1释放

    • 第一个手指释放>指针索引0释放,现在只有指针索引2可用

    • 另外的一个手指按下>指针索引为0.

    在桌面和浏览器中只支持单点,也就是同时只能按下一个“手指”。
    如果你想检测用户是否按下和释放某个手指,可以使用如下方法:

    // 将返回屏幕刚刚是否被触摸
    boolean justTouched = Gdx.input.justTouched();

    这可以用于快速检测是否触发触摸操作。比如“点击屏幕继续”。需要注意的是,它是基于轮询,所以结果可能不准确。

    获取相关坐标可以使用如下代码:

    int firstX = Gdx.input.getX();
    int firstY = Gdx.input.getY();
    int secondX = Gdx.input.getX(1);
    int secondY = Gdx.input.getY(1);

    这样就获取了指针索引0(0为默认)的坐标和指针索引1的坐标。

    鼠标按钮

    在桌面环境下你可以通过如下代码检测鼠标按键是否被按下:

    boolean leftPressed = Gdx.input.isButtonPressed(Input.Buttons.LEFT);
    boolean rightPressed = Gdx.input.isButtonPressed(Input.Buttons.RIGHT);

    需要注意的是,在android中我们仅仅模拟鼠标左键单击。任何触摸事件将视为鼠标单击。触摸屏幕显然没有鼠标左右键的概念。
    www.libgdx.cn版权所有,如需转载,注明出处)

  • 相关阅读:
    数据解析1127
    数据解析1119
    数据解析1114
    数据解析1122
    数据解析1121
    数据解析1120
    数据解析1116
    数据解析1128
    Twitter惊现新型病毒 每分钟159条速率分散
    宏达电预计本年有望在台湾市场击败诺基亚
  • 原文地址:https://www.cnblogs.com/hainange/p/6153498.html
Copyright © 2011-2022 走看看