• 全局系统事件
    • 如何定义输入事件
      • 键盘事件
      • 设备重力传感事件

    全局系统事件

    本篇教程,我们将介绍 Cocos Creator 的全局系统事件。

    全局系统事件是指与节点树不相关的各种全局事件,由 cc.systemEvent 来统一派发,目前支持了以下几种事件:

    • 键盘事件
    • 设备重力传感事件
      除此之外,鼠标事件与触摸事件请参考节点系统事件

    注意:目前已经不建议直接使用 cc.eventManager 来注册任何事件,cc.eventManager 的用法也不保证持续性,有可能随时被修改

    如何定义输入事件

    键盘、设备重力传感器此类全局事件是通过函数 cc.systemEvent.on(type, callback, target) 注册的。

    可选的 type 类型有:

    • cc.SystemEvent.EventType.KEY_DOWN (键盘按下)
    • cc.SystemEvent.EventType.KEY_UP (键盘释放)
    • cc.SystemEvent.EventType.DEVICEMOTION (设备重力传感)

      键盘事件

    • 事件监听器类型:cc.SystemEvent.EventType.KEY_DOWN 和 cc.SystemEvent.EventType.KEY_UP

    • 事件触发后的回调函数:
      • 自定义回调函数:callback(event);
    • 回调参数:

      • KeyCode: API 传送门
      • Event:API 传送门

        1. cc.Class({
        2. extends: cc.Component,
        3. onLoad: function () {
        4. // add key down and key up event
        5. cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
        6. cc.systemEvent.on(cc.SystemEvent.EventType.KEY_UP, this.onKeyUp, this);
        7. },
        8. onDestroy () {
        9. cc.systemEvent.off(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
        10. cc.systemEvent.off(cc.SystemEvent.EventType.KEY_UP, this.onKeyUp, this);
        11. },
        12. onKeyDown: function (event) {
        13. switch(event.keyCode) {
        14. case cc.KEY.a:
        15. console.log('Press a key');
        16. break;
        17. }
        18. },
        19. onKeyUp: function (event) {
        20. switch(event.keyCode) {
        21. case cc.KEY.a:
        22. console.log('release a key');
        23. break;
        24. }
        25. }
        26. });

    设备重力传感事件

    • 事件监听器类型:cc.SystemEvent.EventType.DEVICEMOTION
    • 事件触发后的回调函数:
      • 自定义回调函数:callback(event);;
    • 回调参数:

      • Event:API 传送门

        1. cc.Class({
        2. extends: cc.Component,
        3. onLoad () {
        4. // open Accelerometer
        5. cc.systemEvent.setAccelerometerEnabled(true);
        6. cc.systemEvent.on(cc.SystemEvent.EventType.DEVICEMOTION, this.onDeviceMotionEvent, this);
        7. },
        8. onDestroy () {
        9. cc.systemEvent.off(cc.SystemEvent.EventType.DEVICEMOTION, this.onDeviceMotionEvent, this);
        10. },
        11. onDeviceMotionEvent (event) {
        12. cc.log(event.acc.x + " " + event.acc.y);
        13. },
        14. });

    大家可以也去看 官方范例 cases03_gameplay/01_player_control 目录下的完整范例(这里包含了,键盘,重力感应,单点触摸,多点触摸的范例)。

    原文: http://docs.cocos.com/creator/1.10/manual/zh/scripting/player-controls.html