Project1

标题: 怎么做的手机上返回键模拟x(返回) [打印本页]

作者: 79160475    时间: 2017-12-29 18:46
标题: 怎么做的手机上返回键模拟x(返回)
本帖最后由 79160475 于 2017-12-30 12:18 编辑

rt
怎么做的手机上返回键模拟x(返回)
在作出的安卓游戏里,返回键会直接退出游戏
不知道有没有插件可以使这个返回键模拟返回的功能呢
话说在手机上两个手指点击屏幕真的傻



这是手机返回键提取出来的一点东东
JAVASCRIPT 代码复制
  1. if (AXY.AjaxNetStuff.Param.PreventAndroidReturnKey) {
  2.         $(window).on('popstate', function() {
  3.                 if(confirm('要退出游戏吗?')){
  4.                         window.close();
  5.                         //var commonEvent = $dataCommonEvents[20];
  6.             //this.setupChild(commonEvent.list, 0);
  7.  
  8. //公共事件
  9.                 }
  10.                 else{
  11.                         window.history.pushState(null, null, '#forward');
  12.                 }
  13.         });
  14.         window.history.pushState(null, null, '#forward');
  15. }

作者: q1456503215    时间: 2017-12-29 18:46
贴主可以一起交流学习吗 我可以把MV的插件和安卓完美结合在一起
作者: 魔族宝    时间: 2017-12-30 01:59
Web端实现这个功能倒是挺简单,尝试了一下打包APP之后无法正常运行(空项目)。
故目前不知道在APP里效果如何。

  1. history.pushState(null, null, location.href);
复制代码

这行代码负责将返回页面重新指向本页面

  1. window.addEventListener('popstate',function(){ do something }));
复制代码

这行代码负责监听返回键事件,在回调函数里做一些我们需要的事情。

占层楼先去睡觉,明天有空的话详细看看。
作者: 芯☆淡茹水    时间: 2017-12-30 08:54
做一个虚拟摇杆一切问题都解决了。
作者: walf_man    时间: 2017-12-31 01:02
我去,你竟然能从我的插件里提取这个,那为何不试试我插件里的返回按钮键呢,支持普通界面和菜单界面的
作者: wmzmtz    时间: 2018-3-5 21:28
本帖最后由 wmzmtz 于 2018-3-6 20:24 编辑
walf_man 发表于 2017-12-31 01:02
我去,你竟然能从我的插件里提取这个,那为何不试试我插件里的返回按钮键呢,支持普通界面和菜单界面的{:4_ ...

大神,我尝试了下修改您那个插件,想实现按安卓返回键时,模拟电脑esc键(呼叫菜单、关闭菜单、返回功能)

现在的结果是,每打开游戏app后,第1次按安卓返回键时,能成功模拟(当前在地图上时就是呼叫菜单,当前在菜单里就是关闭菜单或者返回上一层),但是第2次按安卓返回键时,就又成了秒退游戏

我也是没辙了,望您指教,改动的代码如下,其实就是把//menu/return button的一部分代码替换进//PreventAndroidReturnKey那段的$(window).on('popstate', function()里了:

  1. if (AXY.AjaxNetStuff.Param.PreventAndroidReturnKey) {
  2.         $(window).on('popstate', function() {
  3.                 if(!$gameMap){
  4.                         return;
  5.                 }
  6.                 if(!$gameMap._mapId){
  7.                         return;
  8.                 }
  9.                         TouchInput._events.cancelled = true;
  10.         });
  11.         window.history.pushState(null, null, '#forward');
  12. }
复制代码


另外,大神,我还想把你的//menu/return button那段改动改动,模拟别的按键。看你模拟返回是用TouchInput._events.cancelled = true实现的,请问我如果想模拟上、下、左、右、空格时,不知应该替换成什么代码呢?我对JS完全小白....

改动的代码如下,其实就是把您的代码放在了一个插件指令里启动,关键就是第30行可以怎么改才成实现模拟上下左右空格....

  1. var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
  2.         Game_Interpreter.prototype.pluginCommand = function(command, args) {
  3.                 _Game_Interpreter_pluginCommand.call(this, command, args);
  4.                 if (command == "EnablePictureCommand") {

  5. //返回键
  6. if(AXY.AjaxNetStuff.Param.EnableMenuButton){
  7.         //display html first
  8.         var AXYAjaxMenuButtonTemplate =
  9.                                         '<div class="AXYAjaxMenuButtonButtonImg"><img src="img/pictures/Button-Menu.png" class="AXYAjaxMenuButtonOpen"></div>';
  10.         var AXYAjaxMenuButtonStyleCss =
  11.                         '.AXYAjaxMenuButtonButtonImg{position:fixed;z-index:10000;margin:auto;left:'+
  12.                         AXY.AjaxNetStuff.Param.ESC_X+'px;right:0;top:'+
  13.                         AXY.AjaxNetStuff.Param.ESC_Y+'px;bottom:0;pointer-events:none;}.AXYAjaxMenuButtonButtonImg img{width:'+
  14.                         AXY.AjaxNetStuff.Param.ImgWidth+'px;height:'+
  15.                         AXY.AjaxNetStuff.Param.ImgHeight+'px;opacity:'+
  16.                         AXY.AjaxNetStuff.Param.ImgOpacity+';pointer-events:auto;}';

  17.         $('body').append(AXYAjaxMenuButtonTemplate);
  18.         $('.AXYAjaxMenuButtonButtonImg').append('<style type="text/css">'+AXYAjaxMenuButtonStyleCss+'</style>');

  19.         //last bind the click
  20.         $('.AXYAjaxMenuButtonOpen').unbind('click touchend').bind('click touchend',function () {
  21.                 if(!$gameMap){
  22.                         return;
  23.                 }
  24.                 if(!$gameMap._mapId){
  25.                         return;
  26.                 }
  27. //                        TouchInput._events.cancelled = true;
  28.         });
  29. }
  30.                 }
  31.         };
复制代码










作者: 15251223081    时间: 2018-4-3 19:17
这种效果太简单了 你们的实现方式也太麻烦了 我可以帮你们做出这个效果   插件多也不是太好的 会卡顿
作者: HUISIHEXING    时间: 2018-6-16 20:19
看下这个帖子https://rpg.blue/thread-408795-1-1.html
作者: q1456503215    时间: 2018-6-16 22:09
这种方法我可以调用安卓原生方法 重写返回键的功能 目前安卓方面没有做不到的




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1