- 所有已知实现类:
StateMachineHandlers.RedoHandler
- 函数接口:
- 这是一个函数接口, 因此可用作 lambda 表达式或方法引用的赋值目标。
状态机扩展处理器
- 作者:
- wjybxx date - 2023/12/3
-
方法概要
修饰符和类型方法说明voidbeforeChangeState(StateMachineTask<T> stateMachineTask, Task<T> curState, Task<T> nextState) 该方法在进入新状态前调用 1.两个参数最多一个为null 2.可以设置新状态的黑板和其它数据 3.用户此时可为新状态分配上下文(黑板、取消令牌、共享属性);同时清理前一个状态的上下文 4.用户此时可拿到新状态ChangeStateArgs,后续则不可 5.如果task需要感知redo和undo,则由用户将信息写入黑板default voidbeforeEnter(StateMachineTask<T> stateMachineTask) handler可能也有需要初始化的数据。default boolean是否可以切换到下一个状态default booleanonNextStateAbsent(StateMachineTask<T> stateMachineTask, Task<T> preState) 当状态机没有下一个状态时调用该方法,以避免无可用状态 注意: 1.状态机启动时不会调用该方法 2.如果该方法返回后仍无可用状态,将触发无状态逻辑default voidresetForRestart(StateMachineTask<T> stateMachineTask) handler可能也有需要重置的数据。
-
方法详细资料
-
resetForRestart
handler可能也有需要重置的数据。- 参数:
stateMachineTask- 状态机
-
beforeEnter
handler可能也有需要初始化的数据。- 参数:
stateMachineTask- 状态机
-
isReady
default boolean isReady(StateMachineTask<T> stateMachineTask, @Nullable Task<T> curState, Task<T> nextState) 是否可以切换到下一个状态- 参数:
stateMachineTask- 状态机curState- 当前状态nextState- 下一个状态- 返回:
- 如果可以切换则返回true,否则返回false
-
beforeChangeState
该方法在进入新状态前调用 1.两个参数最多一个为null 2.可以设置新状态的黑板和其它数据 3.用户此时可为新状态分配上下文(黑板、取消令牌、共享属性);同时清理前一个状态的上下文 4.用户此时可拿到新状态ChangeStateArgs,后续则不可 5.如果task需要感知redo和undo,则由用户将信息写入黑板- 参数:
stateMachineTask- 状态机curState- 当前状态nextState- 下一个状态
-
onNextStateAbsent
当状态机没有下一个状态时调用该方法,以避免无可用状态 注意: 1.状态机启动时不会调用该方法 2.如果该方法返回后仍无可用状态,将触发无状态逻辑- 参数:
stateMachineTask- 状态机preState- 前一个状态,用于计算下一个状态- 返回:
- 用户是否执行了【状态切换】或【停止状态机】
-