java.lang.Object
cn.wjybxx.btree.Task<T>
cn.wjybxx.btree.Decorator<T>
- 所有已实现的接口:
ICancelTokenListener
- 直接已知子类:
AlwaysCheckGuard,AlwaysFail,AlwaysRunning,AlwaysSuccess,Inverter,LoopDecorator,OnlyOnce,StateMachineTask,SubtreeRef
装饰任务(最多只有一个子节点)
- 作者:
- wjybxx date - 2023/11/25
-
字段概要
字段 -
构造器概要
构造器 -
方法概要
修饰符和类型方法说明protected final intaddChildImpl(Task<T> task) protected voidexit()该方法在Task进入完成状态时执行 1.该方法与Task.enter(int)对应,通常用于停止Task.enter(int)中启动的逻辑。getChild()getChild(int index) 获取指定索引的childfinal int子节点的数量(仅包括普通意义上的child,不包括钩子任务)final TaskInlineHelper<T> final intindexChild(Task<?> task) protected voidonChildRunning(Task<T> child, boolean starting) 子类如果支持内联,则重写该方法(超类不能安全内联)protected voidonEventImpl(Object event) 对于控制节点,通常将事件派发给约定的子节点或钩子节点。removeChildImpl(int index) void重置任务以便重新启动(清理运行产生的所有临时数据)voidsetChildImpl(int index, Task<T> task) protected void停止所有运行中的子节点 1.该方法在自身的exit之前调用 2.如果有特殊的子节点(钩子任务),也需要在这里停止 3.该方法不采用visitor实现,是因为停止任务可能有特殊的时序。voidvisitChildren(TaskVisitor<? super T> visitor, Object param) 访问所有的子节点(含hook节点)从类继承的方法 cn.wjybxx.btree.Task
addChild, beforeEnter, canHandleEvent, checkCancel, enter, execute, exportControlFlowOptions, getBlackboard, getCancelToken, getControl, getControlData, getControlFlowOptions, getEnterFrame, getEntity, getExitFrame, getFlags, getGuard, getNormalizedStatus, getPrevStatus, getReentryId, getRunFrames, getSharedProps, getStatus, getTaskEntry, isActiveInHierarchy, isActiveSelf, isAutoListenCancel, isAutoResetChildren, isBreakInline, isCancelled, isCheckingGuard, isCompleted, isExited, isFailed, isFailedOrCancelled, isInlinable, isInvertedGuard, isManualCheckCancel, isRunning, isSlowStart, isStillborn, isSucceeded, onActiveInHierarchyChanged, onCancelRequested, onChildCompleted, onEvent, refreshActiveInHierarchy, registerCancelListener, removeAllChild, removeChild, removeChild, resetChildrenForRestart, resetForRestart, setActive, setAutoListenCancel, setAutoResetChildren, setBlackboard, setBreakInline, setCancelled, setCancelToken, setChild, setChildCancelToken, setCompleted, setControl, setControlData, setEnterFrame, setExitFrame, setFailed, setFlags, setGuard, setGuardFailed, setInvertedGuard, setManualCheckCancel, setPrevStatus, setSharedProps, setSlowStart, setSuccess, stop, stop, stop, template_checkGuard, template_execute, template_executeInlined, template_startChild, template_startHook, unsetChildCancelToken, unsetControl
-
字段详细资料
-
child
-
inlineHelper
被内联运行的子节点 1.该字段定义在这里是为了减少抽象层次,该类并不提供功能。 2.子类要支持实现内联优化时,应当在Task.onChildRunning(Task, boolean)和Task.onChildCompleted(Task)维护字段引用。
-
-
构造器详细资料
-
Decorator
public Decorator() -
Decorator
-
-
方法详细资料
-
getInlineHelper
-
resetForRestart
public void resetForRestart()从类复制的说明:Task重置任务以便重新启动(清理运行产生的所有临时数据)1. 和exit一样,清理的是运行时产生的临时数据,而不是所有数据;不过该方法是比exit更彻底的清理。 2. 钩子任务也应当被重置。 3. 与
Task.beforeEnter()相同,重写方法时,应先执行父类逻辑,再重置自身属性。 4. 有临时数据的Task都应该重写该方法,行为树通常是需要反复执行的。- 覆盖:
resetForRestart在类中Task<T>
-
exit
protected void exit()从类复制的说明:Task该方法在Task进入完成状态时执行 1.该方法与Task.enter(int)对应,通常用于停止Task.enter(int)中启动的逻辑。 2.该方法也用于清理部分运行时产生的临时数据。 3.一定记得取消注册的各种监听器。 -
stopRunningChildren
protected void stopRunningChildren()从类复制的说明:Task停止所有运行中的子节点 1.该方法在自身的exit之前调用 2.如果有特殊的子节点(钩子任务),也需要在这里停止 3.该方法不采用visitor实现,是因为停止任务可能有特殊的时序。 4.如果子节点不是按原始序启动的,务必要重写该方法。- 覆盖:
stopRunningChildren在类中Task<T>
-
onEventImpl
从类复制的说明:Task对于控制节点,通常将事件派发给约定的子节点或钩子节点。 对于叶子节点,通常自身处理事件。 注意: 1.转发事件时应该调用子节点的Task.onEvent(Object)方法 2.在AI这样的领域中,建议将事件转化为信息存储在Task或黑板中,而不是尝试立即做出反应。- 指定者:
onEventImpl在类中Task<T>
-
onChildRunning
子类如果支持内联,则重写该方法(超类不能安全内联)- 指定者:
onChildRunning在类中Task<T>- 参数:
starting- 是否是启动时调用,即首次调用
-
visitChildren
从类复制的说明:Task访问所有的子节点(含hook节点)- 指定者:
visitChildren在类中Task<T>
-
indexChild
- 覆盖:
indexChild在类中Task<T>- 返回:
- index or -1
-
getChildCount
public final int getChildCount()从类复制的说明:Task子节点的数量(仅包括普通意义上的child,不包括钩子任务)- 指定者:
getChildCount在类中Task<T>
-
getChild
从类复制的说明:Task获取指定索引的child -
addChildImpl
- 指定者:
addChildImpl在类中Task<T>- 返回:
- 为child分配的index
-
setChildImpl
- 指定者:
setChildImpl在类中Task<T>- 返回:
- 索引位置旧的child
-
removeChildImpl
- 指定者:
removeChildImpl在类中Task<T>- 返回:
- index对应的child
-
getChild
-
setChild
-