作者cjcat2266 (CJ Cat)
看板Flash
標題[研究] 有限狀態機 - Finite State Machine
時間Sat Jan 24 15:53:55 2009
如題,最近做了有限狀態機(Finite State Machine, FSM)的研究
因為我想要用FSM來做我的個人網站
用不同的state來表示不同頁面
用不同的transition來表示轉場
應該管理起來很輕鬆
(也可以應用在選單、遊戲事件串接上)
這邊有個很簡單的範例
雖然說要做這樣的效果用FSM好像有點殺雞用牛刀
不過這樣展示FSM的功能還蠻方便的
SWF
http://0rz.tw/FDi49
原始檔
http://0rz.tw/TFfCh
FSM簡單來說就是一個擁有多個狀態的"機器"
當FSM處於一個狀態的時候
接收到不同的input訊號會跳到不同的狀態
狀態轉換的過程稱為transition
FSM會觸發使用者的自訂函式
能夠觸發函式的時機有三個:
1.進入一個狀態的時候
2.離開一個狀態的時候
3.經過一個transition的時候
FSM創造state與transition的方式是使用factory pattern
用createState()和createTransition()來產生結構
接下來只要用input()來輸訊號
FSM就會依照這個input訊號來做轉態
上面的範例有6個state,12個transition
(兩個相臨state中間有來回兩條transition關係)
input信號為"cw"和"ccw" (順時針、逆時針轉動)
當我建構好所有的state和transition之後
接下來只要在FSM身上呼叫 input("cw") 或者 input("ccw")
FSM就會根據不同的信號來做動作
這些動作寫在一些函式裡面
而這些函式被呼叫的時機就是之前提到的三個時機
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.88.123
推 shingoliang:酷!不過flex中已經有實做了耶,state(s)/transition 01/24 16:10
→ cjcat2266:這個跟Flex的state不一樣唷,Flex是排版state 01/24 16:19
→ cjcat2266:我的FSM的state可以式抽象的state 01/24 16:19
→ cjcat2266:transition效果也可以自己寫,不侷限於Flex內建的那些 01/24 16:19
推 shingoliang:瞭解!看來要研究一下才知道差異有多少:P 01/24 16:49