状态机在quick中是一个亮点,如果我们做一款RPG游戏,一个角色一般会拥有idle,attack,walk,run,death这些状态,如果游戏角色的状态采用分支条件判断的话,会造成非常庞大而难以维护,但一旦使用了状态机这种模式,就会显得简单方便。
对于quick中的状态机是如何实现的咱们先不去了解,首先看看如何去使用它。
总结起来,如果让一个类拥有状态机,主要有两步:
1.创建状态机对象
1.创建状态机组件
- self.fsm={}
- cc.GameObject.extend(self.fsm):addComponent("components.behavior.StateMachine"):exportMethods()
这样就创建了一个状态机对象,接下来我们要对其初始化,其实也就是设置各个状态的逻辑。
2.初始化状态机(设置状态逻辑)
设置状态逻辑是重写setupState方法,这其中有这么几个字段参数,
- initial:状态机的初始状态
- terminal (final):结束状态
- events:状态发生转变时对应的事件
- callbacks:发生转变时的回调函数
一般我们会设置initial,events和callbacks这三个。
先看events,在events中需要分清楚“事件”和“状态”,events采用table结构,例如我们来写一个
copy