首页 > 编程知识 正文

安卓物理按键修改器,安卓手机手机设置返回按键

时间:2023-05-04 20:06:08 阅读:265490 作者:571

背景:在CocosCreater加载一个Scene后,打开游戏或者打开一个弹窗,这个时候如果触发Android的返回按键,会导致应用直接关闭。在此种情况,需要监听安卓的返回事件,然后将场景中打开的弹窗或者正在进行的游戏进行关闭,然后在退出应用。

实现:

在Cocos中,监听cc.SystemEvent.EventType.KEY_DOWN事件,可以实现监听到安卓的返回事件,实现方案如下:(此种情况无法使用原生的onKeyDown方法监听到物理按键,Cocos对此事件进行拦截处理)

onLoad () { cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN,this.onKeyDown,this); }, onDestroy() { cc.systemEvent.off(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this); }, onKeyDown(event) { switch(event.keyCode) { case cc.macro.KEY.back://该值在CocosCrater 2.3添加使用 console.log("----onKeyDown------"); this.onBackPressed(); break; } cc.log("---onKeyDownClicked--------b-------"); }, onBackPressed() { //_amusementPark是通过预制资源实现的一个弹窗,如果弹窗打开,先关闭弹窗,然后在退出应用 if(this._amusementPark != null && this._amusementPark.isValid) { this._amusementPark.destroy(); this._amusementPark = null; } else { console.log("-----onBackPressed----"); // cc.director.end();//该种方式关闭应用会一直报错。 // cc.director.pause(); cc.audioEngine.stopAll(); if(cc.director.isPaused()) { cc.game.end(); } } },

测试以上实现方案在安卓10的系统上,不能正常生效。但是此种情况原生的onKeyDown方法被调用,

所以此种情况,在原生端的onKeyDown中实现方法的监听,然后调用CocosCreater中的js方法处理返回事件。这样两种方案结合,可以实现对各版本安卓系统适配。

AppActivity.java

//AppActivity中的代码 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK) { Cocos2dxHelper.runOnGLThread(new Runnable() { @Override public void run() { Cocos2dxJavascriptJavaBridge.evalString("cc.game.jsBridge.onBackPressed();"); } }); return true; } else { return super.onKeyDown(keyCode, event); } } //js中的代码 onBackPressed() { console.log("----onBackPressed----"); },

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。