Project1

标题: 有判断按键按下 和 弹起 的吗 [打印本页]

作者: sblkhgm    时间: 2014-7-29 15:21
标题: 有判断按键按下 和 弹起 的吗
有能判断按键按下时  和 按键弹起   代码吗  

#当按键按下 显示 " 显示窗口"  中时 如果按键还没弹起  就不在显示 显示窗口 了
只有按键弹起后 从新按下 才 显示窗口


  if  按键(Alt)按下时  and  按键(E)按下时 and $aa  !=   true   
     显示窗口
        $aa  !=   true  
   else #弹起时
        $aa = false
   end
我试过这方法  但是一直按着  窗口就 一直显示 后多的  
如果 加判断  if 窗口在显示 时   就释放   他就会  一直显示 然后 释放 循环



作者: 鑫晴    时间: 2014-7-29 16:00
本帖最后由 鑫晴 于 2014-7-29 16:01 编辑

好像只有这个



Input
处理游戏手柄和键盘输入信息的模块。

模块方法

Input.update
更新输入信息。原则上 1 帧调用 1 次。

Input.press?(num)
判断与编号 num 对应的按钮是否现在被按下。

如果按下返回 true,未按下则返回 false。

if Input.press?(Input::C)
  do_something
end

Input.trigger?(num)
判断与编号 num 对应的按钮是否重新被按下。

只有从未按下状态向按下状态变化的瞬间被认定是「重新被按下」。

如果按下返回 true,未按下则返回 false。

Input.repeat?(num)
判断与编号 num 对应的按钮是否重新被按下。

和 trigger? 不同的是,其考虑了连续按下按钮时的重复。

如果按下返回 true,未按下则返回 false。

Input.dir4
判断方向按钮的状态,是 4 方向输入的特殊形式,返回与数字键对应的整数(2,4,6,8)。

方向按钮未按下(或被看作与其相同)则返回 0。

Input.dir8
判断方向按钮的状态,是 8 方向输入的特殊形式,返回与数字键对应的整数(1,2,3,4,6,7,8,9)。

方向按钮未按下(或被看作与其相同)则返回 0。

常量

DOWN LEFT RIGHT UP
与方向按钮的下、左、右、上相对应的编号。

A B C X Y Z L R
与各按钮相对应的编号。

SHIFT CTRL ALT
与键盘的 SHIFT、CTRL、ALT 键直接相对应的编号。

F5 F6 F7 F8 F9
与键盘的各功能键相对应的编号。除此之外的功能键已被系统保留,不能取得。


作者: kuerlulu    时间: 2014-7-29 17:25
语死早没看懂你要什么
[ 判定,       第一帧为true        | 2-------------∞帧只要不弹起都为true ]
[ Input.trigger?(Input::ALT)    | Input.repeat?(Input::ALT)               ]
Input.press?(Input::ALT) 只要按钮是按下的状态就为true, 弹起状态就为false
作者: batfjtn    时间: 2014-7-29 21:05
全键盘脚本是有这样的功能啊~~!!

if Kboard.press?($R_Key_D)
  self.guard # 按住的情况~
else
  self.remove_guard # 松开的情况
end

附带全键盘脚本~!!

作者: sblkhgm    时间: 2014-7-29 22:08
batfjtn 发表于 2014-7-29 21:05
全键盘脚本是有这样的功能啊~~!!

if Kboard.press?($R_Key_D)

def press?(rkey)
def repeat?(rkey)
def trigger?(rkey)
麻烦说下有什么区别啊
作者: RyanBern    时间: 2014-7-29 22:49
为了说明问题方便,按键用空格举例。

press?(rkey):判断某个按键是否被按住,意思就是说按住空格(不抬起),press?返回true,一旦空格抬起,press返回false。
trigger?(rkey):判断某个按键是否被按下,意思就是说空格键原来的状态是【非按下】的,从【非按下】到【按下】这一瞬间,trigger?返回true。除此以外,不按空格或者按住空格不放开,trigger?返回的都是false。
repeat(rkey):判断某个按键是否被重新按下,这个不太好解释,意思就是说,第一次由【非按下】变为【按下】,repeat?返回true,如果之后按住空格不放,则每过一段很短的时间,repeat?会返回true。其余情况返回false。这个多用在方向键移动窗口的光标上,比方说你一直按住【方向键:下】,你会看到光标一格一格往下走。这里用的就是repeat?,如果换成press?,那么光标移动特别快(大约是1格/帧),如果换成trigger?,你会发现光标往下动1格后就不动了。

很遗憾,没有LZ说的“判断按键抬起”,所谓判断按键抬起,就是当按键的状态由【按下】变为【非按下】的那一瞬间为true,其余情况为false,这个和trigger?相反,我们可以仿照trigger?的定义来定义出“判断按键抬起”。
以下脚本以4L的全键盘脚本为基础。
  1. # 判断按键抬起
  2. def release?(rkey)
  3.   result = GetKeyState.call(rkey)
  4.   if result != 0
  5.     @R_Key_Hash[rkey] = 1
  6.     return false
  7.   else
  8.     if @R_Key_Hash[rkey] == 0
  9.       return false
  10.     else
  11.       @R_Key_Hash[rkey] = 0
  12.       return true
  13.     end
  14.   end
  15. end
复制代码
未测试,有问题再找我。
作者: 恐惧剑刃    时间: 2014-7-30 09:44
补充LS,press / repeat = 4  这是数学式子!!4乃准确数字。。。
所以 在菜单中press会很快。
按下弹起,应该就是按下的状态从true变为false的那一瞬间




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