Re: [問題] 請問有辦法延遲KeyEvent的讀取速度嗎?
※ 引述《TonyQ (骨頭)》之銘言:
: 標題: Re: [問題] 請問有辦法延遲KeyEvent的讀取速度嗎?
: 時間: Sat Dec 8 20:26:41 2007
:
: ※ 引述《TonyQ (骨頭)》之銘言:
: : 推 yorjing:第一個是counter%base=n嗎? 12/08 19:18
:
: 舉個最簡單的SAMPLE
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 220.132.59.247
: 推 yorjing:Thread.sleep(num)是放/*do something*/這邊嗎? 12/09 00:22
: 推 yorjing:可是如果用sleep delay的是運算而不是讀取............ 12/09 00:28
: 推 yorjing:好像只要是加sleep在KeyOnDown之下就會造成運算延遲 12/09 00:34
你應該把你的問題在講清楚點才對,
如果你是要用sleep ,sleep是"延後執行"這個key的動作,
而不是"忽略這個key"的動作,所以並不會減少"整體key的數量"。
在這個情況下,你應該要選擇的是queue法,
透過一個獨立的thread去進行key的行為,並且透過固定時間來執行。
他的事件模型大概長這樣
Delaytime =1000 (ms)
┌─key listener────┐ ┌ Excute queue ─────┐
│ listening...←┐ │ │list ┌────┐ │
│ ↓ │ │(add key) │ ↑ ┌──┘ sleep │
│ onKeyDown→→→→→→→→→→→→→→┘ │ (delaytime) │
│ ↓ │ │ │ ↓ yes ↑ │
│ └─────┘ │ │ isEmpty? ─→──┤ │
│ │ │ │no │ │
└───────────┘ │ ↓ │ │
│ Get key │ │
│ delete key in list │ │
│ ↓ │ │
│ do something │ │
│ └→──────┘ │
└─────────────┘
────────────────────────────────
另一個 我所謂log法的東西,則是 "我delay期間的事件我都不要"
比方說,我按住空白鍵假設兩秒會發十次,
但是實際上只有間隔一秒的兩次是實際有效的 。
那我就設一個時間,上一次按鍵到這次按鍵時,
必須要到一定的時間才列入有效的執行,否則我就當作沒看到。
這個可以減少/過濾多餘的按鍵事件。
他的大概模型是很單純也很簡單,如下面所述
假設delaytime(int) 為1000 (單位:ms)
↓
紀錄起始(lasttime)
↓
┌─────── key action ─────────────┐
│listening for key... ←───────┐ │
│ ↓ │ │
│ onKeydown │ │
│ ↓ │ │
│ 取得時間(nowtime) ↑ │
│ ↓ no │ │
│ (nowtime-lasttime) > delaytime ──┤ │
│ │yes │ │
│ ↓ │ │
│ lasttime=nowtime │ │
│ do action ↑ │
│ └─────────────┘ │
└──────────────────────────┘
ps.雖然說應該是我多心,不過還是提醒一下,
lasttime要作為listener的成員,不然每次onKeydown會無法保留紀錄。
--
這些是我過去在做小遊戲的經驗啦,
不是甚麼很專業的東西,但應該堪用就是了...
--
▄▅▆▇███▇▆▅▄▃ ╰┼╯─╮ ╮
◥███████████◣ ╰┼╯=│=│
◥██████───────◣ *. ╯ ╯ ╯ の 物 語 .*
◥███████──────◣ ~ ◢◣ ◢◣
◥██████───────◤ ◥◤* 空白的世界.翼 *◥◤
◥██▁▂▃▄▅▆▇███▆▅▄▃▂▂~telnet://tony1223.no-ip.info
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.59.247
※ 編輯: TonyQ 來自: 220.132.59.247 (12/09 16:21)
※ 編輯: TonyQ 來自: 220.132.59.247 (12/09 16:35)
推
12/09 17:43, , 1F
12/09 17:43, 1F
→
12/09 18:26, , 2F
12/09 18:26, 2F
推
12/09 19:00, , 3F
12/09 19:00, 3F
推
12/10 09:42, , 4F
12/10 09:42, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 6 篇):