[研究] 有限狀態機 - Finite State Machine

看板Flash作者 (CJ Cat)時間17年前 (2009/01/24 15:53), 編輯推噓4(406)
留言10則, 5人參與, 最新討論串1/1
如題,最近做了有限狀態機(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
酷!不過flex中已經有實做了耶,state(s)/transition
01/24 16:10, 1F

01/24 16:19, , 2F
這個跟Flex的state不一樣唷,Flex是排版state
01/24 16:19, 2F

01/24 16:19, , 3F
我的FSM的state可以式抽象的state
01/24 16:19, 3F

01/24 16:19, , 4F
transition效果也可以自己寫,不侷限於Flex內建的那些
01/24 16:19, 4F

01/24 16:49, , 5F
瞭解!看來要研究一下才知道差異有多少:P
01/24 16:49, 5F

01/25 20:22, , 6F
話說到180度時顯示current state是120耶
01/25 20:22, 6F

01/25 23:09, , 7F
真的耶,感謝指正。已經修改好了,原來是少一行code
01/25 23:09, 7F

01/27 15:06, , 8F
cool!非常實用!
01/27 15:06, 8F

02/04 22:13, , 9F
不太懂,理論上web伺服器都是FSM, 甚至電腦不都是FSM嗎?
02/04 22:13, 9F

02/04 22:15, , 10F
那是理論,這是讓你能夠用FSM結構來設計互動程式
02/04 22:15, 10F
文章代碼(AID): #19UiaL1F (Flash)