zoukankan      html  css  js  c++  java
  • quick 状态机StateMachine

    function Player:addStateMachine()
        self.fsm_ = {}
        cc.GameObject.extend(self.fsm_)
        :addComponent("components.behavior.StateMachine")
        :exportMethods()
    
        self.fsm_:setupState({
            -- 初始状态
            initial = "idle",
    
            -- 事件和状态转换
            events = {
                -- t1:clickScreen; t2:clickEnemy; t3:beKilled; t4:stop
                {name = "clickScreen", from = {"idle", "attack"},   to = "walk" },
                {name = "clickEnemy",  from = {"idle", "walk"},  to = "attack"},
                {name = "beKilled", from = {"idle", "walk", "attack", "hit"},  to = "dead"},
                {name = "beHit", from = {"idle", "walk", "attack"}, to = "hit"},
                {name = "stop", from = {"walk", "attack", "hit"}, to = "idle"},
            },
    
            -- 状态转变后的回调
            callbacks = {
                onidle = function (event) self:idle() end,
                onattack = function (event) self:attackEnemy() end,
                onhit = function (event) self:hit() end,
                ondead = function (event) self:dead() end
            },
        })
    
    end

     那我发一个clickScene的事件,它判断如果是idle attack状态的话就执行walk状态 跟if else一样 只是系统帮你写了if else了
     用事件来驱动的状态迁移 
     


  • 相关阅读:
    链路追踪
    Zuul网关
    MyBatis批量插入
    自定义组件使用v-model
    正则表达式入门
    博客园主题1【备份】
    关于我
    input输入框内容规范正则总结
    实例003:完全平方数
    python基础day5dict
  • 原文地址:https://www.cnblogs.com/as3lib/p/4108121.html
Copyright © 2011-2022 走看看