[研究] 鍵盤Combo系統 - KeyReactionManager
媽呀~花了我兩天兩夜終於我把它給搞定了!!
在這期間也了解到了一些KeyboardEvent時間差的問題
(不過有點難解釋...有時間再看看有沒有辦法整理出來)
先看看範例
範例中的文字欄位裡面代表著combo的字串
連續按下1>2>1就可以看到裡面顯示"1 2 1"
按錯combo輸入則會顯示"X"
線上觀看 http://0rz.tw/de3Cb
原始檔案 http://0rz.tw/d93AO
API 下載 http://0rz.tw/b73A4
P.S.是鍵盤左上方的數字喔,不是numpad
=============================以下為使用說明=============================
大致來說,KeyReactionManager(KRM)是一個能夠定義鍵盤combo的API
能夠應用在 一些鍵盤操控較複雜的遊戲設計或者互動程式設計
使用KRM相關的API之前,一定要先呼叫KeyReactionManager.init(stage);
如此一來一些相關初始設定才會被完成
KRM的結構是使用tree資料結構
每個KeyReactionTree(KRT)含有一個當作rootNode的KeyReactionNode(KRN)
每個KRN裡面有個array包含著一些KeyReaction(KR)
這些KR有個nextNode指到下一個KRN
KR是拿來判斷 "在什麼條件下combo會往下一步走"
目前的API只有PressKeyReaction和ReleaseKeyReaction
分別對應 "當某個指定的鍵被按下/放開的時候"
如果大家想要創造自己的KR
只要去繼承AbstractKeyReaction
並且override掉keyDownReaction和keyUpReaction
然後搭配呼叫gotoNextNode(), breakChain()就好了
如此一來就可以創造出各種鍵盤判定條件,例如:
"按下X的時候Y也要被按下"
"按下X的時候Y不可以是按下的"
"按下X,但是按錯其他鍵不算combo失敗"
"按下X之後Y秒內要按下Z"
一個combo的運作流程大致如下:
1.新建一個KRT,並且指定其rootNode為某個KRN
2.每個KRN設定好KR清單
3.每個KR又指到下一個KRN
4.指定每個KR的reaction function
(也就是當鍵盤判定條件達成時,要做出什麼反應)
P.S.記得一個combo要能夠用作,KRM和KRT的active都要被設為true (預設true)
--
CJ Cat = Croa'J Cat = Cockroach Cat = 西街凱特 = 蜚蠊貓 = 蟑螂貓
Gallery http://cjcat2266.deviantart.com
ptt2 Board CJWorkshop - 阿多比閃光(Adobe Flash)研討區
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.136.71.112
※ 編輯: cjcat2266 來自: 220.136.71.112 (01/26 20:13)
Flash 近期熱門文章
PTT數位生活區 即時熱門文章