/ 开发笔记

Cocos Creator 实现安卓按【后退】键退出游戏

Cocos Creator打包出来的安卓游戏,默认是不响应安卓系统的[后退]按键的,需要监听相应的系统事件来实现。

具体步骤

以下是实现通过[后退]按键退出游戏的步骤:

Cocos Creator 版本:2.0.9

  1. 监听系统按键

通过 cc.systemEvent.on 可以监听对应的系统事件。
其中系统按键事件是:cc.SystemEvent.EventType.KEY_DOWN

if(cc.sys.platform == cc.sys.ANDROID){
    cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
}
  1. 处理按键信息
    在onKeyDown方法出处理[后退]键

Creator 2.x版本以上,[后退]键对应的是 cc.macro.KEY.back

onKeyDown(event){
    switch (event.keyCode) {
        case cc.macro.KEY.back:
            // 参考步骤3
            break;
    }
}
  1. 退出游戏
    为了防止玩家误点,一般会要求再点一次后退才确认退出游戏。

退出游戏的话,用 cc.game.end()

简单流程:
1). 添加标记_toExitGame来记录首次按键。
2). 首次点击后退时,该标记设置为true,发出消息,用于弹出提示“再次点击后退,退出游戏”。
3). 如果3秒内没有再次点击,则重置该标记。

示例

if (!this._toExitGame) {
    // 首次点击,重置该标记
    this._toExitGame = true;
    
    // 发出后退消息,这里监听者来弹出提示:再次点击后退,退出游戏。
    // 这里要替换成自己的消息处理方法
    // AppFacade.getInstance().sendNotification(GAMEEVENTS.APP.TRY_EXIT);
  
    // 3秒后没有再次按【后退】按钮,则重置该标记
    this.node.runAction(cc.sequence(cc.delayTime(3), cc.callFunc(() => {
        this._toExitGame = false;
        // this.label.string = '';
    })));
}else{
    // 已经点击过一次,则直接退出
    cc.game.end();
    return;
}

感谢

感谢网友Leo501在简书上分享的详细教程
https://www.jianshu.com/p/9f641ac2b6df