一些设备提供了持续检测一个键的状态是否为“按下”或“释放”的能力。持续检测一个键当前是否被按下使我们能给予用户“快速开火”的能力。不是所有的设备都有这个功能,因此需要注意。
6.3.2 输入方式的不同
开发者需要意识到,不同的设备有不同的输入方式。至少,他们需要编写保护式的代码以允许不同的输入方式。为一个指针设备或一个键盘设备进行测试是明智的。例如,如果一个MIDlet是针对Sony Ericsson P900的,那么需要将按钮置于屏幕上,并需要更大的图像使得用户选择时更加方便。在一个键盘设备上,例如Nokia 6600等,用户就要依赖操纵杆来导航,并且需要自动选中项目。
Sony Ericsson P900提供了一个软键盘来弥补没有键盘的问题。这对于用户的游戏会有什么影响呢?他们会仍然喜欢类似一个键盘手机上的体验吗?除了这两种输入方式外,是否应该开发一种不同的用户界面?例如,不监听左右键,MIDlet可以检测屏幕上哪一部分被手写笔按下;如果按在角色的左边或右边,角色就应该向此方向移动。在角色身上按下手写笔将引发开火。操纵杆可以配合手写笔使用。换句话说,应该试图尝试其他捕获用户输入的方式,而不是模拟键盘。
也许开发者需要问他们自己,基于指针的设备是否对另一种用户仍旧有吸引力。游戏设计者是否应该考虑充分使用设备的特性,而不是试图移植一个不适合的游戏?最好的商业决定也许不是移植所有的应用,而是为设备创建其特有的感官。
6.3.3 高级用户界面组件
使用高级UI组件(如TextField、List和Form)而不是直接绘制到一个Canvas上,这通常能提供一个可移植的UI。这些组件及其布局都是抽象的,底层设备实现处理组件在屏幕上的显示。应用程序不关心如何捕获用户输入或单个的键,也不负责定义可视外观以及导航和卷动等动作。
这对于基于信息显示的应用程序来说效果很好,因为开发者可以更关注如何在屏幕上以一致的方式组织信息。开发者基本上没有控制外观的能力,因此,UI界面保持和本地应用程序的外观一致。