Cocos Creator的 cc.Node 有一套完整的事件监听和分发机制。在这套机制之上,引擎提供了一些基础的节点相关的系统事件。
Cocos Creator支持的系统事件包含鼠标、触摸、键盘、重力传感等四种,其中鼠标和触摸事件是被直接触发在相关节点上的,所以称为节点系统事件。与之对应的,键盘和重力传感事件被称为全局系统事件。
本文主要讲述如何处理全局系统中的键盘事件。过程非常简单,只要注册该事件类型,并编写相应的处理函数即可,如下:
在 node 节点的 onLoad 中注册键盘事件响应
onLoad () {
cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
cc.systemEvent.on(cc.SystemEvent.EventType.KEY_UP, this.onKeyUp, this);
},
在 node 节点的 onDestroy 中注销键盘事件响应
onDestroy () {
cc.systemEvent.off(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
cc.systemEvent.off(cc.SystemEvent.EventType.KEY_UP, this.onKeyUp, this);
},
处理按键按下事件
onKeyDown (event) {
switch(event.keyCode) {
case cc.KEY.ctrl:
cc.log('turn down ctrl');
....
break;
case cc.KEY.z:
cc.log('turn down z');
....
break;
}
},
处理按键释放事件
onKeyUp (event) {
switch(event.keyCode) {
case cc.KEY.ctrl:
cc.log('turn up ctrl');
....
break;
case cc.KEY.z:
cc.log('turn up z');
....
break;
}
},
最后,附上 Cocos Creator 中定义的键盘按键的索引列表。(索引对应的具体键位请参照官方文档:http://docs.cocos.com/creator/api/zh/enums/KEY.html)
索引
- none
- back
- menu
- backspace
- tab
- enter
- shift
- ctrl
- alt
- pause
- capslock
- escape
- space
- pageup
- pagedown
- end
- home
- left
- up
- right
- down
- select
- insert
- Delete
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- a
- b
- c
- d
- e
- f
- g
- h
- i
- j
- k
- l
- m
- n
- o
- p
- q
- r
- s
- t
- u
- v
- w
- x
- y
- z
- num0
- num1
- num2
- num3
- num4
- num5
- num6
- num7
- num8
- num9
- *
- +
-
- numdel
- /
- f1
- f2
- f3
- f4
- f5
- f6
- f7
- f8
- f9
- f10
- f11
- f12
- numlock
- scrolllock
- ;
- semicolon
- equal
- =
- ,
- comma
- dash
- .
- period
- forwardslash
- grave
- [
- openbracket
- backslash
- ]
- closebracket
- quote
- dpadLeft
- dpadRight
- dpadUp
- dpadDown
- dpadCenter