类 StackStateMachineTask<T>

所有已实现的接口:
ICancelTokenListener

public class StackStateMachineTask<T> extends StateMachineTask<T>
栈式状态机,在普通状态机的基础上支持了redo和undo
作者:
wjybxx date - 2023/12/1
  • 构造器详细资料

    • StackStateMachineTask

      public StackStateMachineTask()
  • 方法详细资料

    • peekUndoState

      public final Task<T> peekUndoState()
      查看undo对应的state
    • peekRedoState

      public final Task<T> peekRedoState()
      查看redo对应的state
    • setUndoQueueCapacity

      public final void setUndoQueueCapacity(int capacity)
      设置undo队列大小
    • setRedoQueueCapacity

      public final void setRedoQueueCapacity(int capacity)
      设置redo队列大小
    • addUndoState

      public final boolean addUndoState(Task<T> curState)
      向undo队列中添加一个状态
      返回:
      是否添加成功
    • addRedoState

      public final boolean addRedoState(Task<T> curState)
      向redo队列中添加一个状态
      返回:
      是否添加成功
    • undoChangeState

      public final boolean undoChangeState(ChangeStateArgs changeStateArgs)
      撤销到前一个状态
      覆盖:
      undoChangeState 在类中 StateMachineTask<T>
      返回:
      如果有前一个状态则返回true
    • redoChangeState

      public final boolean redoChangeState(ChangeStateArgs changeStateArgs)
      重新进入到下一个状态
      覆盖:
      redoChangeState 在类中 StateMachineTask<T>
      返回:
      如果有下一个状态则返回true
    • resetForRestart

      public void resetForRestart()
      从类复制的说明: Task
      重置任务以便重新启动(清理运行产生的所有临时数据)

      1. 和exit一样,清理的是运行时产生的临时数据,而不是所有数据;不过该方法是比exit更彻底的清理。 2. 钩子任务也应当被重置。 3. 与Task.beforeEnter()相同,重写方法时,应先执行父类逻辑,再重置自身属性。 4. 有临时数据的Task都应该重写该方法,行为树通常是需要反复执行的。

      覆盖:
      resetForRestart 在类中 StateMachineTask<T>
    • exit

      protected void exit()
      从类复制的说明: Task
      该方法在Task进入完成状态时执行 1.该方法与Task.enter(int)对应,通常用于停止Task.enter(int)中启动的逻辑。 2.该方法也用于清理部分运行时产生的临时数据。 3.一定记得取消注册的各种监听器。
      覆盖:
      exit 在类中 StateMachineTask<T>
    • beforeChangeState

      protected void beforeChangeState(Task<T> curState, Task<T> nextState)
      覆盖:
      beforeChangeState 在类中 StateMachineTask<T>
    • getUndoQueueCapacity

      public int getUndoQueueCapacity()
    • getRedoQueueCapacity

      public int getRedoQueueCapacity()