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版权所有,如需转载,注明出处)
9.2.1、Libgdx的输入处理之轮询的更多相关文章
- 9.2、Libgdx的输入处理之鼠标、触摸和键盘
(官网:www.libgdx.cn) Libgdx支持的最主要的设备是desktop或浏览器的鼠标支持,Android的触摸屏支持和键盘的支持.我们接下来了解一下. 键盘 用户按下或释放一个按键生成了 ...
- 9、Libgdx的输入处理
(官网:www.libgdx.cn) 不同的平台有着不同的输入方式.桌面用户可以通过键盘和鼠标与应用进行交互,基于浏览器的游戏也是这样.在Android中,鼠标被触摸屏所替代,通常没有实体键盘.And ...
- 采用轮询的方式检测串口输入&&采用中断的方式检测串口输入的区别!
区别1:中断USART1_IRQHandler()不放进main(主函数)里,而轮询检测rcv()需要: 但是需要在主函数里对中断NVIC()进行初始化,因为所有程序都是从主函数开始一步一步执行,想要 ...
- 9.2.2、Libgdx的输入处理之事件处理
(官网:www.libgdx.cn) 事件处理可以更加准确的获取用户的输入.事件处理提供了一种可以通过用户接口进行交互的方法.比如按下.释放一个按钮. 输入处理 事件处理通过观察者模式来完成.首先,需 ...
- 9.1、Libgdx的输入处理的配置和查询
(官网:www.libgdx.cn) 有时判断是否支持输入设备是必要的.通常你的游戏不需要支持所有的输入设备.比如你可能不需要加速度计或者罗盘.这时我们需要禁用这些设备保持电量.接下来将教你怎样做. ...
- Jenkins持续集成学习-Windows环境进行.Net开发3
目录 Jenkins持续集成学习-Windows环境进行.Net开发3 目录 前言 目标 优化nuget包生成流程 自动触发构建 Jenkins定时轮询触发 SVN客户端钩子触发 SVN服务器钩子触发 ...
- STM32 GPIO输入输出(基于HAL库)
一.基础认识 GPIO全名为General Purpose Input Output,即通用输入输出.有时候简称为"IO口".通用,说明它是常见的.输入输出,就是说既能当输入口使用 ...
- 图解 Kafka 超高并发网络架构演进过程
阅读本文大约需要 30 分钟. 大家好,我是 华仔, 又跟大家见面了. 上一篇作为专题系列的第一篇,我们深度剖析了关于 Kafka 存储架构设计的实现细节,今天开启第二篇,我们来深度剖析下「Kafka ...
- Libgdx 开发指南(1.2) 应用框架——模块概览
模块概览 引言 LibGDX由一些为一个典型游戏架构中的各个步骤提供服务的模块组成. Input:为所有平台提供一致的输入模型与处理器.支持键盘.触屏.加速度传感器与鼠标. Graphics:使用硬件 ...
随机推荐
- __str__与__repr__
在讲解之前,我们先来了解下str和repr的区别:两者都是用来将数字,列表等类型的数据转化为字符串的形式.不同之处在于str更加类似于C语言中使用printf输出的内容,而repr输出的内容会直接将变 ...
- LinkedList源码和并发问题分析
1.LinkedList源码分析 LinkedList的是基于链表实现的java集合类,通过index插入到指定位置的时候使用LinkedList效率要比ArrayList高,以下源码分析是基于JDK ...
- mysql substr() 函数
mysql substr() 函数 用法:substr(string string,num start,num length); string为字符串:start为起始位置:length为长度. 注意 ...
- Java语言程序设计-助教篇
1. 给第一次上课(软件工程)的老师与助教 现代软件工程讲义 0 课程概述 给学生:看里面的第0个作业要求 2. 助教心得 美国视界(1):第一流的本科课堂该是什么样?(看里面的助教部分) 助教工作看 ...
- Spring MVC 实践 - Component
Spring MVC 实践 标签 : Java与Web Converter Spring MVC的数据绑定并非没有任何限制, 有案例表明: Spring在如何正确绑定数据方面是杂乱无章的. 比如: S ...
- Gradle 1.12用户指南翻译——第五十二章. Maven 插件
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上 ...
- tomcat启动批处理——catalina.bat
这个批处理才是tomcat服务器启动跟关闭的核心脚本.其中包括....(各种变量),此节将详细讲解这个批处理的逻辑. 先看看第一部分脚本: ****************************** ...
- 手把手图文并茂教你用Android Studio编译FFmpeg库并移植
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52661331 之前曾写过一篇&l ...
- 使用DWR实现自动补全 类似百度搜索框的自动显示效果
使用DWR实现自动补全 自动补全:是指用户在文本框中输入前几个字母或汉字的时候,自动在存放数据的文件或数据库中将所有以这些字母或汉字开头的数据提示给用户供用户选择 在日常上网过程中,我们经常使用搜索引 ...
- Spark发展现状与战线
前言 现今Spark正是风头正劲时,Spark本是UCBerkeley的AMPLab诞生的项目,后来捐赠给了Apache来管理源码和后续发展.今年从Apache孵化器终于孵化出了1.0版本.其对大数据 ...