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版权所有,如需转载,注明出处)

时间: 2024-11-10 14:17:36

9.2.1、Libgdx的输入处理之轮询的相关文章

9、Libgdx的输入处理

(官网:www.libgdx.cn) 不同的平台有着不同的输入方式.桌面用户可以通过键盘和鼠标与应用进行交互,基于浏览器的游戏也是这样.在Android中,鼠标被触摸屏所替代,通常没有实体键盘.Android设备有加速度计和罗盘等传感器. Libgdx抽象了所有的这些输入设备.鼠标和触摸屏被视为同一类型,并且支持多点触摸. 取决于不同的输入设备,可以使用轮询的方式来监听状态,或者通过注册一个监听. 所有的输入设备通过Input模块访问: // 判断键盘A是否被按下. boolean isPres

9.2、Libgdx的输入处理之鼠标、触摸和键盘

(官网:www.libgdx.cn) Libgdx支持的最主要的设备是desktop或浏览器的鼠标支持,Android的触摸屏支持和键盘的支持.我们接下来了解一下. 键盘 用户按下或释放一个按键生成了相应的事件.每个事件包含了一个 key-code来识别是哪个按键按下或释放.这些key-code在不同的平台是不同的.Libgdx要做的就是隐藏不同系统之前的差别.可以查阅Keys类.你可以通过轮询来判断是哪个键被按下. 单独的key-code不能告诉我们用户输入了什么.这通常是组合键造成这种困扰,

9.2.2、Libgdx的输入处理之事件处理

(官网:www.libgdx.cn) 事件处理可以更加准确的获取用户的输入.事件处理提供了一种可以通过用户接口进行交互的方法.比如按下.释放一个按钮. 输入处理 事件处理通过观察者模式来完成.首先,需要实现InputProcessor接口: public class MyInputProcessor implements InputProcessor { @Override public boolean keyDown (int keycode) { return false; } @Overr

9.1、Libgdx的输入处理的配置和查询

(官网:www.libgdx.cn) 有时判断是否支持输入设备是必要的.通常你的游戏不需要支持所有的输入设备.比如你可能不需要加速度计或者罗盘.这时我们需要禁用这些设备保持电量.接下来将教你怎样做. 禁用加速度计和罗盘(Android) 在执行AndroidApplication.initialize()方法之前,可以只用AndroidApplicationConfiguration类来设置一些参数,包括配置输入设备. 假设我们的游戏不需要加速度计和罗盘,我们可以禁用这些设备: public c

【开源java游戏框架libgdx专题】-04-接口介绍及生命周期

在核心项目中包含6大与操作系统交互的接口,每个后端都实现了这6大接口. Application:运行应用程序并通知API的客户端应用程序级别的事件,提供日志记录设施和查询方法,例如,内存使用. Files:公开平台的底层文件系统 Input:接收用户的输入——鼠标.键盘.触摸或其他输入设备,支持轮询和事件处理驱动. Net:提供了通过HTTP / HTTPS以跨平台的方式获取资源的手段,以及创建TCP服务器和客户端套接字. Audio:提供播放的声音效果和音乐流媒体以及直接访问的PCM音频输入/

4、libgdx应用框架

(原文:http://www.libgdx.cn/topic/29/4-libgdx%E5%BA%94%E7%94%A8%E6%A1%86%E6%9E%B6) 模块 作为核心,libgdx提供了六个接口与操作系统进行交互,针对每个操作系统的backend实现这些接口. Application:运行应用和通知一个API客户端应用程序层面的事件,比如窗口更改大小.提供日志系统和查询方法,比如内存使用. Files:暴露系统底层的文件系统.提供了一系列的针对文件操作的抽象. Input:用户输入.如鼠

libGDX 模块概览

本文章翻译自libGDX官方wiki,.转载请注明出处:http://blog.csdn.net/kent_todo/article/details/37940595 libGDX官方网址:http://libgdx.badlogicgames.com/ libGDX源代码:https://github.com/libgdx/libgdx 介绍: libGDX包含了非常多的模块,这些模块为一个正常运转的游戏构建的每一步提供了非常好的服务. Input:提供了一个没有定义的输入模块,和对全部平台的

输入url到页面返回的过程

输入url后,你看到了百度的首页,那么这一切是如何发生的呢? 这个问题之前.最近.我想以后肯定还会被问到,或者问到这样的题目,如果在百度框里输入查询的字符串开始,是怎么返回你需要的东西呢. 那这什么个过程呢(这个问题我在之后的博客中在写)? 网上各种的说法,不外乎这么几种 第一种简单的说呢就是这样的: 第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器. 第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回. 第三步:如

从输入网址到显示网页的过程中发生了什么?

从用户输入一个网址到网页最终展现到用户面前,中间究竟发生了什么?这是一个简单而复杂的问题.大致流程总结如下:1.输入地址2.浏览器查找域名的 IP 地址(这一步包括 DNS 具体的查找过程,包括:浏览器缓存->系统缓存->路由器缓存...)3.浏览器向 web 服务器发送一个 HTTP 请求4.服务器的永久重定向响应(从 http://example.com 到 http://www.example.com)5.浏览器跟踪重定向地址6.服务器处理请求7.服务器返回一个 HTTP 响应8.浏览器