java.lang.Object
cn.wjybxx.btree.Task<T>
cn.wjybxx.btree.BranchTask<T>
cn.wjybxx.btree.branch.SingleRunningChildBranch<T>
cn.wjybxx.btree.branch.SelectorN<T>
- 所有已实现的接口:
ICancelTokenListener
多选Selector。
如果
required小于等于0,则等同于Success
如果required等于1,则等同于Selector;
如果required等于children.size,则在所有child成功之后成功 -- 默认不会提前失败。
如果required大于children.size,则在所有child运行完成之后失败 -- 默认不会提前失败。- 作者:
- wjybxx date - 2023/11/26
-
字段概要
从类继承的字段 cn.wjybxx.btree.branch.SingleRunningChildBranch
runningChild, runningIndex从类继承的字段 cn.wjybxx.btree.BranchTask
children -
构造器概要
构造器 -
方法概要
修饰符和类型方法说明protected void该方法用于初始化对象。protected voidenter(int reentryId) 该方法在Task进入运行状态时执行 1.数据初始化需要放在Task.beforeEnter()中,避免执行逻辑时对象未初始化完成。intbooleanprotected voidonChildCompleted(Task<T> child) 子类的实现模板:void重置任务以便重新启动(清理运行产生的所有临时数据)voidsetFailFast(boolean failFast) voidsetRequired(int required) 从类继承的方法 cn.wjybxx.btree.branch.SingleRunningChildBranch
execute, exit, getCompletedCount, getRunningIndex, illegalStateMsg, isAllChildCompleted, nextChild, onChildRunning, onEventImpl, stopRunningChildren从类继承的方法 cn.wjybxx.btree.BranchTask
addChildImpl, childStream, getChild, getChildCount, getChildren, getFirstChild, getLastChild, indexChild, isFirstChild, isLastChild, removeAllChild, removeChildImpl, setChildImpl, setChildren, shuffleChild从类继承的方法 cn.wjybxx.btree.Task
addChild, canHandleEvent, checkCancel, getBlackboard, getCancelToken, getControl, getControlData, getCurFrame, getEnterFrame, getEntity, getEntryBlackboard, getExitFrame, getFlags, getGuard, getNormalizedStatus, getPrevStatus, getReentryId, getRunFrames, getSharedProps, getStatus, getTaskEntry, isAutoCheckCancel, isAutoListenCancel, isAutoResetChildren, isCancelled, isCompleted, isDisableDelayNotify, isExecuteTriggeredByEnter, isExecuting, isExited, isExitTriggeredByStop, isFailed, isFailedOrCancelled, isLocked, isNotified, isReentered, isRunning, isSlowStart, isStillborn, isSucceeded, lock, onCancelRequested, onEvent, removeChild, removeChild, resetChildrenForRestart, resetForRestart, setAutoCheckCancel, setAutoListenCancel, setAutoResetChildren, setBlackboard, setCancelled, setCancelToken, setChild, setCompleted, setControl, setControlData, setDisableDelayNotify, setEnterFrame, setExitFrame, setFailed, setFlags, setGuard, setGuardFailed, setPrevStatus, setSharedProps, setSlowStart, setSuccess, stop, stop, template_checkGuard, template_execute, template_runChild, template_runChildDirectly, template_runHook, template_runHookDirectly, tryLock, unlock, unsetControl
-
构造器详细资料
-
SelectorN
public SelectorN() -
SelectorN
-
SelectorN
-
-
方法详细资料
-
resetForRestart
public void resetForRestart()从类复制的说明:Task重置任务以便重新启动(清理运行产生的所有临时数据)1. 和exit一样,清理的是运行时产生的临时数据,而不是所有数据;不过该方法是比exit更彻底的清理。 2. 钩子任务也应当被重置。 3. 与
Task.beforeEnter()相同,重写方法时,应先执行父类逻辑,再重置自身属性。 4. 有临时数据的Task都应该重写该方法,行为树通常是需要反复执行的。- 覆盖:
resetForRestart在类中SingleRunningChildBranch<T>
-
beforeEnter
protected void beforeEnter()从类复制的说明:Task该方法用于初始化对象。 1.不命名为init,是因为init通常让人觉得只调用一次。 2.该方法不可以使自身进入完成状态。- 覆盖:
beforeEnter在类中SingleRunningChildBranch<T>
-
enter
protected void enter(int reentryId) 从类复制的说明:Task该方法在Task进入运行状态时执行 1.数据初始化需要放在Task.beforeEnter()中,避免执行逻辑时对象未初始化完成。 2.如果要初始化子节点,也放到Task.beforeEnter()方法; 3.允许更新自己为完成状态 -
onChildCompleted
从类复制的说明:SingleRunningChildBranch子类的实现模板:protected void onChildCompleted(Task child) { runningChild = null; // 尝试计算结果(记得处理取消) ... // 如果未得出结果 if (!isExecuting()) { template_execute(); } }- 覆盖:
onChildCompleted在类中SingleRunningChildBranch<T>
-
getRequired
public int getRequired() -
setRequired
public void setRequired(int required) -
isFailFast
public boolean isFailFast() -
setFailFast
public void setFailFast(boolean failFast)
-