quick StateMachine 状态机的使用

quick 的状态机 真是使用简单,功能强大,记录一下使用方式便于以后使用

1:创建一个状态机StateMachine

(1) self.fsm_ = StateMachine.new()

(2)self:addComponent(“component.behavior.StateMachine”)

self.fsm_ = self:getComponent(“component.behavior.StateMachine”)

2:setupState

    self.fsm_:setupState({
        events= {
            {name = "start", from = "none",   to = "green" },
            {name = "warn",  from = "green",  to = "yellow"},
            {name = "panic", from = "green",  to = "red"   },
            {name = "panic", from = "yellow", to = "red"   },
            {name = "calm",  from = "red",    to = "yellow"},
            {name = "clear", from = "red",    to = "green" },
            {name = "clear", from = "yellow", to = "green" },
        },
        callbacks = {
            onbeforestart = function(event) self:log() end,
            onstart = function(event) self:log() end,
            onwarn  = function(event) end,
            ...
            onchangestate = function(event) print(event.from,event.to) end
        }

    })

执行状态跳转

if self.fsm_:canDoEvent("clear") then
    self.fsm_:doEvent("clear")
end

注意一开始一定要doEvent(“start”) 状态从none 转为 green状态

更详细的一些函数使用参照http://www.it165.net/pro/html/201403/10111.html

时间: 2024-10-08 15:20:43

quick StateMachine 状态机的使用的相关文章

Quick StateMachine状态机

状态机在quick中是一个亮点,如果我们做一款RPG游戏,一个角色一般会拥有idle,attack,walk,run,death这些状态,如果游戏角色的状态采用分支条件判断的话,会造成非常庞大而难以维护,但一旦使用了状态机这种模式,就会显得简单方便. 对于quick中的状态机是如何实现的咱们先不去了解,首先看看如何去使用它. 总结起来,如果让一个类拥有状态机,主要有两步: 1.创建状态机对象 2.初始化状态机,主要包括事件和回调函数 1.创建状态机组件 self.fsm = {} cc.Game

quick-cocos2d-x游戏开发【14】——StateMachine状态机

状态机在quick中是一个亮点,如果我们做一款RPG游戏,一个角色一般会拥有idle,attack,walk,run,death这些状态,如果游戏角色的状态采用分支条件判断的话,会造成非常庞大而难以维护,但一旦使用了状态机这种模式,就会显得简单方便. 对于quick中的状态机是如何实现的咱们先不去了解,首先看看如何去使用它. 总结起来,如果让一个类拥有状态机,主要有两步: 1.创建状态机对象 2.初始化状态机,主要包括事件和回调函数 1.创建状态机组件 self.fsm = {} cc.Game

Qt Qml状态机框架

Qt5.4引入了QML状态机框架,与C++状态机框架类似,可以在应用程序中创建并执行状态图.为此,QtQml.StateMachine模块提供了一些相关的QML类型,用于创建事件驱动的状态机,这些QML类型列举如下: StateMachine-- 状态机管家,执行算法基于SCXML(State Chart XML),在状态机启动之前要设置好初始状态,即initialState属性. State--状态机中的通用类型,注意与QtQuick模块中的State类型不同,导入模块时先导入QtQuick模

mina statemachine解读(一)

  statemachine(状态机)在维护多状态数据时有非常好的作用,现在github上star排名最前的是squirrel-foundation以及spring-statemachine,而mina的statemachine好像并没有对外提供,多用于mina的高级特性里面. 了解了下spring-statemachine,提供特别完善的扩展方式,interceptor,listener,甚至支持分布式,但是上手使用还是有一定的难度,代码也比较复杂,状态机的实例比较重.没有看到较好的现实应用实

Android4.4(MT8685)源码WIFI--启动

系统启动时,会在SystemServer中创建一个WifiService的对象,并把这个对象保存在系统服务中 wifi = new WifiService(context); ServiceManager.addService(Context.WIFI_SERVICE, wifi); 看看WiFiService的构造方法 public WifiService(Context context) { mContext = context; mInterfaceName = SystemPropert

Android 4.2 Bluetooth 分析总结(二) 蓝牙enable 的整个过程

转载请标明出处:Android 4.2 Bluetooth 分析总结(二) 蓝牙enable 的整个过程 现在开始我们分析 Android4.2 Bluetooth 打开的整个过程,由于是新手,难免有很多错误,记录只是为了以后方便查找,如发错误敬请指出. 我们整个分析过程有可能有点繁琐,但请仔细阅读,读完之后必然发现还是会有一点点收获的,虽然写的不好.搜先我们上一份enable 打开蓝牙整个过程的打印:然后我们跟踪打印来窥探 Android4.2Bluetooth 工作的流程. D/Blueto

Android与设计模式——状态(State)模式

在阎宏博士的<JAVA与模式>一书中开头是这样描述状态(State)模式的: 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式. 状态模式允许一个对象在其内部状态改变的时候改变其行为.这个对象看上去就像是改变了它的类一样. 状态模式的结构 用一句话来表述,状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类.状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变.状态模式的

转 springboot 教程

转 Spring Boot 揭秘与实战 系列 发表于 2016-12-21 | Spring框架 | SpringBoot 文章目录 1. 快速上手篇 2. 数据存储篇 3. 数据缓存篇 4. 日志框架篇 5. 配置文件篇 6. 服务器篇 7. 消息队列篇 8. 实用技术篇 9. 发布与部署 10. 应用监控篇 11. 源码分析篇 12. 附录 13. 源代码 <Spring Boot 揭秘与实战>系列,汇总文集. 快速上手篇 Spring Boot 揭秘与实战(一) 快速上手 数据存储篇 S

(六)Unity5.0新特性------新动画功能

?? unity 5.0 中的新动画功能 这里是你可以期待的新动画功能快速概述 ! State Machine Behaviours状态机行为 在Unity 5 中,你会能够将StateMachineBehaviour 脚本添加到您的states,当played状态时能接收callbacks回调: ?OnStateEnter ?OnStateUpdate ?OnStateExit ?OnStateMove ?OnStateIK 在你的状态,您可以创建尽可能多的StateMachineBehavi