版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
quick-cocos2d-x学习系列之十五状态机代码--createFiniteStateMachineself.fsm_={}cc.GameObject.extend(self.fsm_):addComponent("components.behavior.StateMachine"):exportMethods()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("[FSM]STARTINGUP")end,onstart=function(event)self:log("[FSM]READY")end,onbeforewarn=function(event)self:log("[FSM]STARTEVENT:warn!",true)end,onbeforepanic=function(event)self:log("[FSM]STARTEVENT:panic!",true)end,onbeforecalm=function(event)self:log("[FSM]STARTEVENT:calm!",true)end,onbeforeclear=function(event)self:log("[FSM]STARTEVENT:clear!",true)end,onwarn=function(event)self:log("[FSM]FINISHEVENT:warn!")end,onpanic=function(event)self:log("[FSM]FINISHEVENT:panic!")end,oncalm=function(event)self:log("[FSM]FINISHEVENT:calm!")end,onclear=function(event)self:log("[FSM]FINISHEVENT::onButtonClicked(function()ifself.fsm_:canDoEvent("warn")thenself.fsm_:doEvent("warn")endend):align(display.CENTER,display.cx+50,display.top-540):addTo(self)self.panicButton_=cc.ui.UIPushButton.new():setButtonLabel(cc.ui.UILabel.new({text="panic",size=32,color=display.COLOR_BLACK})):onButtonClicked(function()ifself.fsm_:canDoEvent("panic")thenself.fsm_:doEvent("panic")endend):align(display.CENTER,display.cx+150,display.top-540):addTo(self)--debugself.logCount_=0程序开始时候设置状态为green.函数log打印信息,根据打印状态变化图片。函数pengding打印状态信息,并设置LABEL字符串。解释创建有限状态机--createFiniteStateMachineself.fsm_={}cc.GameObject.extend(self.fsm_):addComponent("components.behavior.StateMachine"):exportMethods()设置有限状态机回调函数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("[FSM]STARTINGUP")end,onstart=function(event)self:log("[FSM]READY")end,onbeforewarn=function(event)self:log("[FSM]STARTEVENT:warn!",true)end,onbeforepanic=function(event)self:log("[FSM]STARTEVENT:panic!",true)end,onbeforecalm=function(event)self:log("[FSM]STARTEVENT:calm!",true)end,onbeforeclear=function(event)self:log("[FSM]STARTEVENT:clear!",true)end,onwarn=function(event)self:log("[FSM]FINISHEVENT:warn!")end,onpanic=function(event)self:log("[FSM]FINISHEVENT:panic!")end,oncalm=function(event)self:log("[FSM]FINISHEVENT:calm!")end,onclear=function(event)self:log("[FSM]FINISHEVENT:clear!")end,onleavegreen=function(event)self:log("[FSM]LEAVESTATE:green")end,onleaveyellow=function(event)self:log("[FSM]LEAVESTATE:yellow")end,onleavered=function(event)self:log("[FSM]LEAVESTATE:red")self:pending(event,3)self:performWithDelay(function()self:pending(event,2)self:performWithDelay(function()self:pending(event,1)self:performWithDelay(function()self.pendingLabel_:setString("")event.transition()end,1)end,1)end,1)return"async"end,ongreen=function(event)self:log("[FSM]ENTERSTATE:green")end,onyellow=function(event)self:log("[FSM]ENTERSTATE:yellow")end,onred=function(event)self:log("[FSM]ENTERSTATE:red")end,onchangestate=function(event)self:log("[FSM]CHANGEDSTATE:"..event.from.."to"..event.to)end,},})创建4个Button分别是:clear,calm,warn,panic。如clear按钮self.clearButton_=cc.ui.UIPushButton.new():setButtonLabel(cc.ui.UILabel.new({text="clear",size=32,color=display.COLOR_BLACK})):onButtonClicked(function()ifself.fsm_:canDoEvent("clear")thenself.fsm_:doEvent("clear")endend):align(display.CENTER,display.cx-150,display.top-540):addTo(self)是否可以调用clear时间,如果可以则调用。其他3个按钮类似。点击panic按钮后先调用函数onbeforepanic输出[FSM]STARTEVENT:panic!然后调用onleavegreen=function(event)self:log("[FSM]LEA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024劳动合同,借用人员劳务合同范文
- 3.2 实数 浙教版七年级数学上册课件
- 2024买卖合同司法纠纷
- 2024家禽养殖场租赁合同
- 班级活动与团队建设的有机结合计划
- 校园安全事件应急演练培训
- 污水处理厂建设项目勘察设计招标合同三篇
- 学期课程安排与进度表计划
- 学习评价多元化方案计划
- 生物课堂教学方案计划
- 桶装饮用水供水合同协议书范本签约版
- 辩论赛:创建一流银行,执行力比创造力更重要全部资料
- 小学二年级下册音乐-《箫》人音版(20页)ppt课件
- 通用航空组织结构图
- 五星级酒店设计任务书
- 人教版八年级物理第三章第一节温度
- 《第十一章探究简单电路》集体备课教案
- 《2021国标暖通图集资料》07FJ02 防空地下室建筑构造
- 高压电机维修方案
- 东川四小五年级数学组集体备课简报(一)
- 张候(Z-H)骨折
评论
0/150
提交评论