[研究] 有限狀態機 - Finite State Machine
如題,最近做了有限狀態機(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
推
01/24 16:10, , 1F
01/24 16:10, 1F
→
01/24 16:19, , 2F
01/24 16:19, 2F
→
01/24 16:19, , 3F
01/24 16:19, 3F
→
01/24 16:19, , 4F
01/24 16:19, 4F
推
01/24 16:49, , 5F
01/24 16:49, 5F
推
01/25 20:22, , 6F
01/25 20:22, 6F
→
01/25 23:09, , 7F
01/25 23:09, 7F
推
01/27 15:06, , 8F
01/27 15:06, 8F
→
02/04 22:13, , 9F
02/04 22:13, 9F
→
02/04 22:15, , 10F
02/04 22:15, 10F