作者cjcat2266 (CJ Cat)
看板Flash
标题[研究] 键盘Combo系统 - KeyReactionManager
时间Sat Jan 26 19:55:15 2008
妈呀~花了我两天两夜终於我把它给搞定了!!
在这期间也了解到了一些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)