KeySensor、KbdSensor是在vrml97標準之外擴展的節點,目前已經正式收入到X3D的標準當中,主要用於響應用戶鍵盤按鍵操作,來對你的程序進行任意的控制。BS/Blaxxun瀏覽器對應的是KeySensor節點,Contvrml瀏覽器(插件)對應的是KbdSensor.
以KeySensor爲例,首先來看一個例子,按下A鍵,發出聲音:
KeySensor不斷的檢測用戶的鍵盤輸入,一旦有字符鍵按下,KeySensor便獲得這個字符的UTF-8編碼值,將之轉換爲10進制整數,通過事件出口keyPress發送出來,通過路由傳遞到腳本節點keyscript的事件入口keynum,這個事件入口一旦接收到值,腳本節點就會執行這個事件入口的同名函數function keynum(value)。
域 描述,以KeySensor爲例,KbdSensor類似:
eventsProcessed |
如果設置爲TRUE,瀏覽器的默認鍵盤動作將不被執行,這個標誌位事件告知瀏覽器所有的事件將被keySensor節點處理。 |
enabled |
設置允許使用這個傳感器的標誌 |
keyPress |
這個事件出口在鍵盤上的任意字符按鍵被按下的時候發生,它的值是用戶按下的鍵所代表的UTF-8字符的十進制整型數值 |
keyRelease |
這個事件出口在鍵盤上的任意字符按鍵被釋放的時候發生,它的值是用戶釋放的鍵所代表的UTF-8字符的十進制整型數值 |
actionKeyPress |
當任意“非字符”鍵被按下時產生,它的值請對應參考下表 |
actionKeyRelease |
當任意“非字符”鍵被釋放時產生,它的值請對應參考下表 |
shiftKey_changed |
shift鍵狀態改變時發送,按下爲TRUE,釋放爲FALSE |
controlKey_changed |
ctrl鍵狀態改變時發送,按下爲TRUE,釋放爲FALSE |
altKey_changed |
alt鍵狀態改變時發送,按下爲TRUE,釋放爲FALSE |
isActive |
活動標誌,當有事件發生時爲TRUE |
character |
在用戶按下任意字符鍵時發送出這個字符鍵所代表的字符 |
ActionKey編碼,KbdSensor與其不同,可用print()函數測試;
Key |
Value |
Home |
1000 |
End |
1001 |
PageUp |
1002 |
PageDown |
1003 |
Up |
1004 |
Down |
1005 |
Left |
1006 |
Right |
1007 |
F1-F12 |
1008-1019 |
用KbdKensor類似,注意鍵盤值和KeySensor的不一樣,幫助文檔在http://www.parallelgraphics.com/developer/products/cortona/extensions/keyboard/