谈起“触觉反馈”,大家可能从字面上并不能理解它是如何工作的。触觉反馈是指在一些支持触摸电子设备中嵌入的技术。如果你手里刚好有一个触摸屏手机,你会经常碰到这种体验。触觉反馈机制响应触摸、模拟键入灵敏度高。通过轻微的质感振动可以触发这种响应。而且这种响应不受真实的设备操作干扰。
Vibration API为宿主设备提供“触觉反馈式”编程机制。Vibration API常用于Web游戏开发人员,处理一些与游戏相关的触觉操作。
Vibration 接口定义如下:
Navigator implements Vibration;
所有Navigator类型的实例均实现Vibration接口。Vibration 接口方法定义如下:
interface Vibration {
void vibrate (unsigned long time) raises (NotSupportedError);
void vibrate (unsigned long[] pattern) raises (NotSupportedError);
};
1.vibrate (unsigned long time)方法说明参数: time
参数类型: unsigned long
参数是否为NULL:否
参数必选/可选:必选
参数描述: 振动时间(毫秒)
异常:NotSupportedError
描述:当time参数超过规定时间,则抛出异常
返回值:Void
2.vibrate (unsigned long[] pattern)方法说明
参数: pattern
参数类型: unsigned long[]
参数是否为NULL:否
参数必选/可选:必选
参数描述: 时间数组。数组偶数下标表示振动时间(毫秒),奇数下标表示间隔时间(毫秒)。
异常:NotSupportedError
描述:当pattern数组长度超过规定数值,或者数组超过规定时间,则抛出异常。
返回值:Void
vibrate (unsigned long[] pattern)方法算法如下:
1. Pattern数组长度为0,则程序退出。
2. 如果pattern数组长度超过规定数值,或者数组超过规定时间,则抛出异常。
3. 保证pattern数组长度为偶数,否则去掉最后一个元素。
4. 遍历pattern数组长度,遇到奇数,则该时间为振动时间(毫秒),遇到偶数,则该时间为间隔时间(毫秒).
实例分析
实例1 —— 触屏设备振动1秒钟
// vibrate for 1 second
navigator.vibrate(1000);
// or alternatively
navigator.vibrate([1000]);
实例2 —— 触屏设备振动1秒钟,静止0.5秒后,再次振动2秒钟。navigator.vibrate([1000, 500, 2000]);
实例3 —— 触屏设备不振动。navigator.vibrate(0);
// or alternatively
navigator.vibrate([]);
总之,触觉反馈可以激起设备的振动,所谓的触觉播放软件实际上重在控制执行器振动的激烈程度以及何时振动。许多触摸屏手机支持触觉反馈,因此用户能够准确知道何时触碰了屏幕。有些游戏控制器可以使用触觉反馈来增强球员与视频游戏的互动。