Extensible 3D (X3D)
Part 1: Architecture and base components
21 Key device sensor component
键设备传感器组件
这部分组件的名称是 “KeyDeviceSensor”。当在 COMPONENT 语句中引用这个组件时需要使用这个名称(参见 7.2.3.4 Component 语句)。
条款描述了 ISO/IEC 19775 标准这部分中的 Key Device Sensor component(键设备传感器组件)。其中包括如何把单个击键或一系列击键输入到 X3D 场景中。表 21.1 列出了这一条款的主要主题。
以下节点类型是键设备(keydevice)传感器:
当 KeySensor 活动时,只要物理键盘设备上的相关键的状态改变,KeySensors 就会产生事件。将由一个事件返回以识别是那一个键的状态发生改变。
当 StringSensor 中指定的终止字符被识别到时,StringSensors 产生一个事件。这个事件将返回终止字符前的 UTF-8 字符。StringSensors 对字符串建立时的变化,也将产生中间事件。这就允许在字符串建立时做出相应的提示。
只要支持这个传感器组件,就假定存在一个可用的键盘类型的键设备,而不管是实际物理设备还是通过模拟的设备。如果希望一个键设备可以产生事件并输入到键设备传感器,则这个键设备需要被激活。键设备在以下情况时 被激活:
TRUE。
当 isActive 域的状态改变时,会产生 isActive 事件以作相应提示。
当一个键设备传感器的 enabled 域设置为 TRUE
时,此
键设备传感器被激活。这同时也导致此键设备传感器的
isActive
域被设置为 TRUE
。同时,应向其它的可能活动的键设备传感器发送
enabled FALSE
事件
。同一时刻激活的键设备传感器只能有一个。
X3DKeyDeviceSensorNode : X3DSensorNode { SFBool [in,out] enabled TRUE SFBool [out] isActive }
这个抽象节点类型是所有使用键设备运作的传感器节点类型的的基本节点类型。
KeySensor : X3DKeyDeviceSensorNode { SFBool [in,out] enabled TRUE SFInt32 [out] actionKeyPress SFInt32 [out] actionKeyRelease SFBool [out] altKey SFBool [out] controlKey SFBool [out] isActive SFString [out] keyPress SFString [out] keyRelease SFBool [out] shiftKey }
当用户在键盘上按键时,KeySensor 节点产生事件。通过向 KeySensor 节点发送 TRUE
值或
FALSE 值的
enabled 事件,可以激活或禁止 KeySensor 节点。如果 KeySensor 节点被禁止,它将不会再追踪键盘输入或产生事件。
在按下或松开键盘上的字符键时会产生 keyPress 事件和 keyRelease 事件。这些事件的值是一个长度为 1 的包含单个 UTF-8 字符的和相应击键相关字符串。产生的相应的 UTF-8 字符集能对应不同的键盘和不同的执行模式。
在按下或松开键盘上的动作键('action' key)时会产生 actionKeyPress 事件和 actionKeyRelease 事件。这些事件的值由 表 21.2 列出:
键 | 值 | 键 | 值 | 键 | 值 |
---|---|---|---|---|---|
HOME | 13 | END | 14 | PGUP | 15 |
PGDN | 16 | UP | 17 | DOWN | 18 |
LEFT | 19 | RIGHT | 20 | F1-F12 | 1-12 |
在按下或松开键盘上的 shift、alt、control 键被时会产生 shiftKey_depressed、altKey_depressed、controlKey_depressed
事件。当键按下时值为 TRUE,当键松开时值为
FALSE。
当按下一个键时,KeySensor 节点产生一个 isActive TRUE
事件。一旦松开这个键,KeySensor
将发送 isActive FALSE
事件。
KeySensor 不受自己在变换层级中位置的影响。
StringSensor : X3DKeyDeviceSensorNode { SFBool [in,out] deletionAllowed TRUE SFBool [in,out] enabled TRUE SFString [out] enteredText SFString [out] finalText SFBool [out] isActive }
当用户在键盘上按键时,StringSensor 节点产生一个事件。通过向 StringSensor 节点发送 TRUE
值或
FALSE 值的
enabled 事件,可以激活或禁止 StringSensor 节点。如果 StringSensor 节点被禁止,它将不会再追踪键盘输入或产生事件。
当按下键盘上的字符键时产生 enteredText 事件。事件的值为输入的 UTF-8 字符串,包括最后键入的字符。产生的相应的 UTF-8 字符集能对应不同的键盘和不同的执行模式。
如果 deletionAllowed 值为 TRUE,当输入浏览器用来识别删除前一个字符的字符值时,enteredText 中以前输入的字符可以被删除。一般这个值由本地操作系统定义。如果 deletionAllowed 值为 FALSE,则只可以增加字符串中的字符;而不允许删除字符。当输入浏览器用来识别删除前一个字符的字符值时,输入被忽略。
当输入浏览器用来识别终止字符串的值时,产生 finalText 事件。一般这个值由本地操作系统定义。当此输入被识别时,finalText 域产生的事件的值等于 enteredText。当 finalText 域事件产生后,enteredText 域被设置为空字符串,但此时不产生事件。
当用户开始键入时,StringSensor 发送一个 isActive TRUE
事件
。当字符串结束时,StringSensor 发送一个 isActive FALSE
事件。
StringSensor 不受自己在变换层级中位置的影响。
Key Device Sensor 组件提供 表 21.3 中规定的两个支持层(levels)。
表 21.3 — Key device sensor 组件支持层
层Level | 必备条件 | 节点/特性 | 支持 |
---|---|---|---|
1 | Core 1 | ||
X3DKeyDeviceSensorNode (abstract) | n/a | ||
KeySensor | 所有域 | ||
2 | Core 1 | ||
Level 1 中的所有 Key Device Sensor 节点 | Level 1 中支持的所有域。 | ||
StringSensor | 所有域 |
翻译m17 保留版权 如需转载请联系 http://m17design.myetang.com/x3d