AABB
AlignmentBehavior
ArriveBehavior
AStar
BFS
BoundingSphere
BVH
BVHNode
Cell
CellSpacePartitioning
CohesionBehavior
CompositeGoal
ConvexHull
Corridor
CostTable
DFS
Dijkstra
Edge
EntityManager
EvadeBehavior
EventDispatcher
Behavior
FollowPathBehavior
FuzzyAND
FuzzyCompositeTerm
FuzzyFAIRLY
FuzzyModule
FuzzyOR
FuzzyRule
FuzzySet
FuzzyTerm
FuzzyVariable
FuzzyVERY
GameEntity
Goal
GoalEvaluator
Graph
GraphUtils
HalfEdge
HeuristicPolicyDijkstra
HeuristicPolicyEuclid
HeuristicPolicyEuclidSquared
HeuristicPolicyManhattan
InterposeBehavior
LeftSCurveFuzzySet
LeftShoulderFuzzySet
LineSegment
Logger
MathUtils
Matrix3
Matrix4
MemoryRecord
MemorySystem
MeshGeometry
MessageDispatcher
MovingEntity
NavEdge
NavMesh
NavMeshLoader
NavNode
Node
NormalDistFuzzySet
OBB
ObstacleAvoidanceBehavior
OffsetPursuitBehavior
OnPathBehavior
Path
Plane
Polygon
Polyhedron
PriorityQueue
PursuitBehavior
Quaternion
Ray
RectangleTriggerRegion
Regular
RightSCurveFuzzySet
RightShoulderFuzzySet
SAT
SeekBehavior
SeparationBehavior
SingletonFuzzySet
Smoother
SphericalTriggerRegion
State
StateMachine
SteeringBehavior
SteeringManager
Task
TaskQueue
Telegram
Think
Time
TriangularFuzzySet
Trigger
TriggerRegion
Vector3
Vehicle
Version
WanderBehavior

canActivateTrigger

函数描述: 判断是否满足触发器条件可运行其回调函数。

语法

canActivateTrigger(trigger, element, index, elementArray)

参数

  • trigger:必选参数,表示要判断的触发器对象。
  • element:必选参数,表示要判断的元素对象。
  • index:可选参数,表示元素在数组中的索引位置。
  • elementArray:可选参数,表示元素所在的数组。

返回值

返回值为 Boolean 类型,表示是否满足触发器条件。若满足条件则返回 true,否则返回 false

说明

canActivateTrigger 函数用于判断是否满足触发器条件可运行其回调函数,如果满足条件,Yuka js库将执行该触发器的回调函数。

触发器对象有以下属性:

  • when:触发条件,表示何时运行回调函数。
  • if:回调函数的前置条件,表示只有当条件满足时才运行回调函数。
  • interval:回调函数的时间间隔设置,表示回调函数执行之间需要等待多少毫秒。

canActivateTrigger 函数根据条件,对触发时间、元素类型和设置的条件进行判断。如果所有条件都满足,就可以执行回调函数。

示例

// 判断是否触发 click 事件,元素类型是 a 标签,前置条件为当前时间是偶数秒
let trigger = {
  when: 'click',
  if: () => new Date().getSeconds() % 2 === 0,
  elementTypes: ['a']
}
let element = document.querySelector('a')
if (canActivateTrigger(trigger, element)) {
  // 符合条件,可以执行回调函数
  trigger.callback()
}