self.fsm_ = {}
cc(self.fsm_)
:addComponent("components.behavior.StateMachine")
:exportMethods()
self.fsm_:setupState({
--defer 翻译:延迟 状态机初始状态为none 如果这个为false 则状态自动none->normal 反之需setupState结束后 doEvent("normal")
--{name = "startup", from = "none", to = "normal"}, --下面这句可以这么理解
initial = {state = "normal", event = "startup", defer = false},
events = {
{name = "disable", from = {"normal", "pressed"}, to = "disabled"},
{name = "enable", from = {"disabled"}, to = "normal"},
{name = "press", from = "normal", to = "pressed"},
{name = "release", from = "pressed", to = "normal"},
},
callbacks = {
-- 在任何事件开始前被激活
onbeforeevent = handler(self, function() print("111") end),
-- 在离开任何状态时被激活
onleavestate = handler(self, function() print("222") end),
-- 在进入任何状态时被激活
onenterstate = handler(self, function() print("333") end),
-- 当状态发生改变的时候被激活
onchangestate = handler(self, function() print("444") end),
-- 在任何事件结束后被激活
onafterevent = handler(self, function() print("555") end),
--这里是拆开的onbefore onafter onleave onenter是事件名 需要组合上状态名normal 或startup
onbeforenormal = handler(self, function() print("666") end),
onafternormal = handler(self, function() print("777") end),
onleavenormal = handler(self, function() print("888") end),
onenternormal = handler(self, function() print("999") end),
onbeforestartup = handler(self, function() print("10") end),
onafterstartup = handler(self, function() print("11") end),
onleavestartup = handler(self, function() print("12") end),
onenterstartup = handler(self, function() print("13") end),
onbeforepress = handler(self, function() print("14") end),
onafterpress = handler(self, function() print("15") end),
onleavepressed = handler(self, function() print("16") end),
onenterpressed = handler(self, function() print("17") end),
},
terminal = "normal" --与to的状态做比较 相关函数 self.fsm_:isFinishedState()是否最终状态
})
--initial = {state = "normal", event = "startup", defer = false},
--打印结果
-- [LUA-print] 10 -- startup 开始前事件
-- [LUA-print] 111 -- 公共的 开始前 事件
-- [LUA-print] 222 -- 离开 none 状态被激活
-- [LUA-print] 999 -- 进入到 normal 状态被激活
-- [LUA-print] 333 -- 公共的 进入任何状态被激活
-- [LUA-print] 444 -- 公共的 状态发生改变被激活
-- [LUA-print] 11 -- startup 结束事件
-- [LUA-print] 555 -- 公共的 在任何事件结束后结束
cocos2d-lua 3.10 框架 状态机 具体创建细则 各个参数有详细说明
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 写在前面,一直以来特别想写点东西。记得有次老大曾经说过一句话,不要一直手心向上,要说会手心向下。懂得分享,好多次决...