用户输入——触摸输入&加速度计
触摸输入作为移动端特有的输入方式,与PC端的鼠标有着类似却不完全相同的特点。例如,两者均支持点按,拖拽的操作,然而仅鼠标支持悬停效果,仅触摸屏大多支持同时多个触摸点;鼠标通常包含两个功能键从而区分左右键,而触摸屏仅实现了点按操作。在Cocos2d-x中,对于触摸输入主要提供了如下三种方式:
1.Layer触摸支持:Layer提供了一套现成的触摸实现,只需启用TouchEnable属性即可接收标准触摸事件。需要重载以touches为前缀的响应函数。
2.标准触摸事件:注册了该事件的所有对象都会平等地接收到触摸事件,并且对于多点触摸,标准触摸事件会同时提供所有的触摸点。
3.带目标的触摸事件:注册了这种事件的对象会按照优先级投递,先接收到事件的对象有权吞噬掉此事件,以阻止其他对象接收到此事件。此外,在多个触摸点的情况下,带目标的触摸事件会逐个触摸点分发,也就意味着每一次接收到的触摸事件只包含一个点的信息。
简单的手势识别
由于移动设备通常缺少足够的实体按键来实现一些常用功能,于是可以适当地为游戏添加一些简单的手势操作。实现上比较简单,只需要在TouchBegan中记下初始手指放到的位置,在TouchEnd中计算手指离开的位置与初始位置的差进而进行判断即可。(也可采用数组来记录多指的同时动作)
除了触摸,移动设备上一个比较重要的输入来源是设备的方向(加速度计),共记录了三个方向的加速度,分别为xyz轴。为了便于开发,Cocos2d-x中将重力加速度(约9.8m/s^2)为一个基本单位。也就是说,当手机平放在桌子上时,x = 0,y = 1,z = 0。在手机正常状态下,xyz轴的加速度之和大约在一个单位左右;而突然动作的时候,加速度将大幅度偏离1;摇动手机的时候,加速度将在某一个或多个方向上出现很大的加速度;当手机失重或下落的过程中,则会加速度变小。根据这些特性,开发者可以为游戏添加有趣的控制效果。具体方法类似上述手势识别,这里不作赘述。
文字输入
栗子如下:
1.创建一个文本框TextFileTTF
2.在文本框之上,设置一个相同大小的“透明”按钮覆盖在文本框之上,按键效果为弹出移动设备的键盘。