Project1

标题: 自己寫的腳本有一個地方解決不了 [打印本页]

作者: henbas    时间: 2008-6-28 06:30
标题: 自己寫的腳本有一個地方解決不了
我重寫了Input模組

以下是部分內容

  1. C = [KEY_C, KEY_ENTER, KEY_SPACE]
  2. @keyboardState = Win32API.new("user32", "GetAsyncKeyState", ['I'], 'I')
  3. @key = 0
  4. @keysTrigger = []
  5.   #--------------------------------------------------------------------------
  6.   # ● 判斷是否重新按下某按鍵
  7.   #     key : 按鍵值
  8.   #--------------------------------------------------------------------------
  9.   def self.trigger?(keys)
  10.     keys.to_a.each do |@key|
  11.       next if @keyboardState.call(@key) == 0
  12.       if @keysTrigger.include?(@key)
  13.         return false
  14.       else
  15.         @keysTrigger.push(@key)
  16.         return true
  17.       end
  18.     end
  19.     @keysTrigger.delete(@key)
  20.     return false
  21.   end
复制代码

現在使用

  1. if Input::trigger?(Input::C)
  2.   (中間要做的事情)
  3. end
复制代码


例如預設選單也是如此
不過按下C在按下SPACE後就會出現只能按下SPACE
而C、ENTER都不能使用(無效)

請問各位大大應該如何修正? [LINE]1,#dddddd[/LINE]此贴于 2008-8-7 14:12:48 被版主火鸡三毛老大提醒,请楼主看到后对本贴做出回应。 [LINE]1,#dddddd[/LINE]此贴于 2008-8-10 0:59:55 被版主火鸡三毛老大提醒,请楼主看到后对本贴做出回应。
作者: 雪流星    时间: 2008-6-28 07:27
在这行上面
@keysTrigger.delete(@key)
用p测试一下 @key

怀疑是这里出了错
作者: henbas    时间: 2008-6-28 08:27
到特技畫面時候
32 88 83 65
這四個值重複(不知道哪個開始...)

32 => SPACE
88 => X
83 => S
65 => A

我按ENTER(進入遊戲)->X(進入選單)->下->C(進入選擇角色特技)->C(進入角色特技畫面)鈕

不過再回來就會沒辦法判斷C、SPACE、ENTER(只有SPACE能夠用)

而我發現一開始定義
  1. C = [KEY_C, KEY_ENTER, KEY_SPACE]
复制代码

如果順序改變
會只有最後一個有效
例如
  1. C = [KEY_ENTER, KEY_SPACE, KEY_C]
复制代码

那麼就只有按下C有效了
作者: 雪流星    时间: 2008-6-28 08:55
如果是只有最後一個有效
那應該是循環判斷中出了問題

如果是API設定上出了問題,那我就幫不了你了
我對API所知有限




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