一.状态机的开发和使用
状态机:使用不同的形式,来指定对象在其生命周期内为响应事件而呈现的各种转态及其转变。通常由当前状态,触发事件,转变动作以及最终状态四部分组成。
常用形式:
- 流程图:基本形式:以触发事件开始(椭圆),指向结果状态(长方形),可能会在根据当前状态条件判断处分支(菱形),混合油多个对象的状态可能会成指数倍得增加分支数。以触发事件为核心。
- UML图(统一建模语言):以状态为核心,箭头表示转变方向,在箭头上指明转变动作。没有说明触发时间。会由于对象间状态的相互影响而使状态转变复杂化。简化uml图:1.可以使用数字替代状态,如0/1表示开关。2.还可以将具体的转变动作及状态转变形式(自身状态的转变或使其他对象的状态转变)写成文本组件的形式包含在状态中,
- 将信息存储成状态数据表中:存储对象的元数据(状态及到该状态的动作(可以是具体的动画和音频剪辑)),以及说明辅助对象转变进入的状态。存储的是进入当前状态的数据
- 查找表:包含自身状态转变,具体的触发对象以及各种辅助对象的新状态的表。存储的是由当前状态经过触发事件的数据,注意与状态数据表的差别。
利用查找表可以依次从前到后地评估一次状态转变,流程为:确定对象->确定状态->确定事件->判断终止状态(需要处理一些意料外的无效事件)->执行动作->改变辅助对象的状态。