(官网:www.libgdx.cn

Libgdx支持的最主要的设备是desktop或浏览器的鼠标支持,Android的触摸屏支持和键盘的支持。我们接下来了解一下。

键盘

用户按下或释放一个按键生成了相应的事件。每个事件包含了一个 key-code来识别是哪个按键按下或释放。这些key-code在不同的平台是不同的。Libgdx要做的就是隐藏不同系统之前的差别。可以查阅Keys类。你可以通过轮询来判断是哪个键被按下。

单独的key-code不能告诉我们用户输入了什么。这通常是组合键造成这种困扰,比如可以通过shift和a来输入A。

鼠标和触摸

鼠标和触摸输入允许用户在屏幕上进行点击。两种输入机制都会返回点击的坐标。原点在左上角,x轴向右,y轴向下。

鼠标输入还包含额外的信息,通知哪个按键被按下。大部分鼠标包含左键、右键和中间键。另外,鼠标通常包含滚轮在应用中进行缩放和滚动等操作。

触摸输入没有按钮的概念。可能支持多点触摸,这取决于具体的设备。第一代Android手机仅仅支持单点触摸。现在大部分手机都支持多点触摸。

需要注意的是,触摸操作在不同的设备中有所差异。这就使得触摸事件触发后悔产生一定的问题。所以要尽可能多的在多台设备上测试你的游戏。

Libgdx抽象同一的对鼠标和触摸事件进行处理。我们可以将鼠标视为一种特殊的触摸。单点触摸,除了坐标外,还会报告按下的按键。触摸输入支持多点触摸,所有的触摸事件都会默认设置鼠标左键(只要你点击屏幕,Libgdx按你鼠标点击左键处理,只不过支持多点)。

需要注意的是Android坐标系统跟屏幕的方向无关。取决于你在应用中的设置。

鼠标和触摸都能通过轮询和事件驱动进行处理。

www.libgdx.cn版权所有,如需转载,注明出处)

9.2、Libgdx的输入处理之鼠标、触摸和键盘的更多相关文章

  1. 【Selenium02篇】python+selenium实现Web自动化:鼠标操作和键盘操作!

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第二篇博 ...

  2. 基于OpenGL编写一个简易的2D渲染框架-07 鼠标事件和键盘事件

    这次为程序添加鼠标事件和键盘事件 当检测到鼠标事件和键盘事件的信息时,捕获其信息并将信息传送到需要信息的对象处理.为此,需要一个可以分派信息的对象,这个对象能够正确的把信息交到正确的对象. 实现思路: ...

  3. Android输入控件EditText和软键盘监听

    1. 跳转到新的页面自动软键盘显示情况: 在配置清单文件AndroidManifest.xml文件,对Activity的windowSoftInputMode属性进行设置. stateUnspecif ...

  4. 前端(十五)—— JavaScript事件:绑定事件方式、事件的冒泡和默认事件、鼠标事件、键盘事件、表单 事件、文档事件、图片事件、页面事件

    JS事件:绑定事件方式.事件的冒泡和默认事件.鼠标事件.键盘事件.表单 事件.文档事件.图片事件.页面事件 一.事件的两种绑定方式 1.on事件绑定方式 document.onclick = func ...

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

    (官网:www.libgdx.cn) 事件处理可以更加准确的获取用户的输入.事件处理提供了一种可以通过用户接口进行交互的方法.比如按下.释放一个按钮. 输入处理 事件处理通过观察者模式来完成.首先,需 ...

  6. 9.2.1、Libgdx的输入处理之轮询

    (官网:www.libgdx.cn) 轮询是检测输入设备的当前状态,比如特定的按键按下,屏幕第一个手指的位置等等.这是一个快速简单的处理用户输入的方式,并且应用到很多的游戏中. 注意:如果你处理轮询, ...

  7. 9、Libgdx的输入处理

    (官网:www.libgdx.cn) 不同的平台有着不同的输入方式.桌面用户可以通过键盘和鼠标与应用进行交互,基于浏览器的游戏也是这样.在Android中,鼠标被触摸屏所替代,通常没有实体键盘.And ...

  8. linux下如何模拟按键输入和模拟鼠标【转】

    转自:http://www.cnblogs.com/leaven/archive/2010/11/30/1891947.html 查看/dev/input/eventX是什么类型的事件, cat /p ...

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

    (官网:www.libgdx.cn) 有时判断是否支持输入设备是必要的.通常你的游戏不需要支持所有的输入设备.比如你可能不需要加速度计或者罗盘.这时我们需要禁用这些设备保持电量.接下来将教你怎样做. ...

随机推荐

  1. 检测linux vps是xen openvz还是kvm的方法

    很多时候不知道自己买的vps是那种虚拟化技术,怕给商家忽悠了,下面给大家介绍下怎么简单的判断自己vps的虚拟化技术. 1.通过系统上的相关目录或文件判断 ll /proc/   ps: /proc目录 ...

  2. Node.js 进程

    process 是全局对象,能够在任意位置访问,是 EventEmitter 的实例. 退出状态码 当没有新的异步的操作等待处理时,Node 正常情况下退出时会返回状态码 0 .下面的状态码表示其他状 ...

  3. Go 语言变量作用域

    作用域为已声明标识符所表示的常量.类型.变量.函数或包在源代码中的作用范围. Go 语言中变量可以在三个地方声明: 函数内定义的变量称为局部变量 函数外定义的变量称为全局变量 函数定义中的变量称为形式 ...

  4. Python pandas.io.data 模块迁移

    这段时间用pandas做数据分析, import pandas.io.data as web 然后得到下面的错误提示 "The pandas.io.data module is moved ...

  5. linux:如何指定进程运行的CPU

    coolshell最新的文章<性能调优攻略>在"多核CPU调优"章节,提到"我们不能任由操作系统负载均衡,因为我们自己更了解自己的程序,所以,我们可以手动地为 ...

  6. Scala: 简介和安装

    http://blog.csdn.net/pipisorry/article/details/52902117 Note: lz只是稍微学学,能看懂就行,不深入.适合scala小白. Scala简介 ...

  7. x264源代码简单分析:x264_slice_write()

    ===================================================== H.264源代码分析文章列表: [编码 - x264] x264源代码简单分析:概述 x26 ...

  8. 没有文件扩展“.js”的脚本引擎问题解决

    安装MinGW的时候提示没有文件扩展".js"的脚本引擎. 原因:系统安装Dreamwear.UltraEdit.EditPlus后修改了.js文件的默认打开方式.当想直接执行js ...

  9. java虚拟机 jvm java堆 方法区 java栈

    java堆是java应用程序最密切的内存空间.几乎所有的对象都存在堆中.java堆完全自动化管理,通过垃圾回收机制,垃圾对象会自动清理,不需要显式释放. 根据java垃圾回收机制的不同,java堆可能 ...

  10. 4.Lucene3.案例介绍,创建索引,查询等操作验证

     案例: Article.java package cn.toto.lucene.quickstart; publicclassArticle { privateintid; private St ...