状态机--状态机3,关于战斗中兵种状态的状态的结束
2015-04-02 20:43
387 查看
战斗中的角色有多种状态,根据不同的事件切换到不同的状态,进入一个状态,
当然也会退出状态,如冰冻状态,战斗中的角色中了冰冻buff后进入冰冻状态,
那么当这个冰冻buff时间到了之后自然就失效了,角色要解除冰冻状态,那么
解除了冰冻状态后要进入哪个状态呢,这个具体看需求,一般情况下是进入到
待机状态,通俗地说,当冰冻buff生效时调用onFrozen(),当冰冻buff失效时
调用onFrozenEnd(),代码如下:
当然也会退出状态,如冰冻状态,战斗中的角色中了冰冻buff后进入冰冻状态,
那么当这个冰冻buff时间到了之后自然就失效了,角色要解除冰冻状态,那么
解除了冰冻状态后要进入哪个状态呢,这个具体看需求,一般情况下是进入到
待机状态,通俗地说,当冰冻buff生效时调用onFrozen(),当冰冻buff失效时
调用onFrozenEnd(),代码如下:
local StateId = require("app.edition4.StateId") local Soldier = class("Soldier") function Soldier:ctor() self.iStateId = StateId.unKnown end --待机 function Soldier:onIdle() self.iStateId = StateId.idle print("切换到待机状态") end --行走 function Soldier:onWalk() if self:isFrozen() then return end self.iStateId = StateId.walk print("切换到行走状态") end --攻击 function Soldier:onAttack() if self:isFrozen() then return end self.iStateId = StateId.attack print("切换到攻击状态") end --冰冻 function Soldier:onFrozen() if self:isFrozen() then return end self.iStateId = StateId.frozen print("切换到冰冻状态") end --冰冻结束,默认切换为待机状态 function Soldier:onFrozenEnd() print("冰冻状态结束") self:onIdle() end function Soldier:isFrozen() return self.iStateId == StateId.frozen end return Soldier
相关文章推荐
- 状态机--状态机4,关于战斗中负责兵种状态切换的状态机
- 状态机--状态机6,关于战斗兵种的状态机初步优化和状态设计
- 状态机--状态机1,关于战斗中兵种状态的初步设计
- 状态机--状态机7,关于战斗兵种的状态机进阶设计与消息系统
- 状态机--状态机5,关于战斗兵种的多状态
- 状态机--状态机2,关于战斗中兵种状态的新增状态
- 状态机--状态机8,关于战斗兵种的复合状态和动作融合技术
- MYSQL游标(CURSOR)关于NOT FOUND或02000结束状态只遍历一次的问题
- 关于正则引擎ε-NFA -> NFA (仅通过边建立限制结束状态的两种尝试
- 关于ASP.NET中调用Excel组件不能结束进程的解决方法
- 关于快要成功这几天的状态!
- 关于HTTP及XMLHTTP状态代码一览
- 关于如何使用自定义的结束消息循环的方式 (转载)
- 关于while(cin>>str)无法结束的问题.
- 关于视图状态
- 关于Windows Mobile模拟器,如何模拟其插入底座的状态
- mark一个asp.net的关于文件上传的状态提示
- 宿主中操作状态机工作流的状态
- 关于状态机
- 告诉自己要结束小狗一样的无规律状态