Project1

标题: 如何暂时禁用键盘输入或是屏蔽按键? [打印本页]

作者: jugendyouth    时间: 2021-3-3 00:14
标题: 如何暂时禁用键盘输入或是屏蔽按键?
rt
主要是我设置触发事件的按键太多了,列分支条件屏蔽掉实在太麻烦 ,有没有办法在执行事件时暂时禁用按键输入,执行完后恢复,让它们不会相互干扰
作者: zths    时间: 2021-3-3 10:19
  1. (function(){
  2.     var InputFuncs = [
  3.         "isPressed",
  4.         "isTriggered",
  5.         "isRepeated",
  6.         "isLongPressed"
  7.     ];
  8.     var TouchInputFuncs = [
  9.         "isPressed",
  10.         "isTriggered",
  11.         "isRepeated",
  12.         "isLongPressed",
  13.         "isCancelled",
  14.         "isMoved",
  15.         "isReleased"
  16.     ];

  17.     function hookFunctions(obj,funcNamesArr,ProcFunc/*function(args,orifunc)*/){
  18.         var oriFuncs = {};
  19.         for(var i = 0; i < funcNamesArr.length; i++){
  20.             (function(oriFunc){
  21.                 obj[funcNamesArr[i]] = function(){return ProcFunc.apply(this,[arguments,oriFunc])};
  22.             })(obj[funcNamesArr[i]]);
  23.         }
  24.     }
  25.     function blockInput(args,oriFunc){
  26.         if(window.blockInputOn){//可以改成$gameSwitches.value(开关id) 就可用开关调整输入开关
  27.             return false;
  28.         }
  29.         return oriFunc.apply(this,args);
  30.     }
  31.     hookFunctions(Input,InputFuncs,blockInput);
  32.     hookFunctions(TouchInput,TouchInputFuncs,blockInput)
  33. })();
复制代码

执行window.blockInputOn=1 则禁止输入
window.blockInputOn=0允许输入
或者看注释改成用开关禁止输入
作者: jugendyouth    时间: 2021-3-3 20:53
zths 发表于 2021-3-3 10:19
执行window.blockInputOn=1 则禁止输入
window.blockInputOn=0允许输入
或者看注释改成用开关禁止输入 ...

感谢大佬!
作者: jugendyouth    时间: 2021-3-3 21:33
zths 发表于 2021-3-3 10:19
执行window.blockInputOn=1 则禁止输入
window.blockInputOn=0允许输入
或者看注释改成用开关禁止输入 ...

再请教一下这个代码具体该怎么用,如果当脚本输到事件里代码总是从后面被截掉一大段
作者: zths    时间: 2021-3-4 01:20
随便塞到哪能执行就行。。。。。。
作者: jugendyouth    时间: 2021-3-4 19:49
zths 发表于 2021-3-4 01:20
随便塞到哪能执行就行。。。。。。

解决了,再次感谢




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