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

delayedTelegrams

基本描述

delayedTelegramsMessageDispatcher对象的一个属性,用于管理消息调度器中延迟发送的信息。

数据结构

delayedTelegrams被定义为一个数组,其中存储了与当前对象相关的延迟消息。该数组中的每一项都是一个JavaScript对象,包含了以下属性:

  • dispatchTime:表示消息应该被分发的时间。这个属性的值是一个UNIX时间戳(即1970年1月1日以来经过的毫秒数)。
  • sender:表示发送消息的实体。
  • receiver:表示接收消息的实体。
  • message:表示要发送的消息。

方法

delayedTelegrams对象提供了以下方法:

push

push()方法用于向延迟消息队列中添加新的消息。

参数

  • dispatchTime:消息应被分发的时间。这个参数的值必须是一个UNIX时间戳。
  • sender:发送消息的实体。
  • receiver:接收消息的实体。
  • message:要发送的消息。

pop

pop()方法从延迟消息队列中移除并返回最早的消息。

返回值

返回一个包含以下属性的JavaScript对象:

  • dispatchTime:消息应该被分发的时间。
  • sender:消息的发送者。
  • receiver:消息的接收者。
  • message:要发送的消息。

clear

clear()方法用于清除延迟消息队列中的所有消息。

返回值

该方法不返回任何值。

使用示例

const dispatcher = new MessageDispatcher();
const entity1 = new Entity();
const entity2 = new Entity();

// 添加一条延迟消息
dispatcher.delayedTelegrams.push({
  dispatchTime: Date.now() + 5000, // 5秒后发送
  sender: entity1,
  receiver: entity2,
  message: "hello world"
});

// 处理延迟消息
setInterval(() => {
  const now = Date.now();
  while (dispatcher.delayedTelegrams.length > 0 && dispatcher.delayedTelegrams[0].dispatchTime <= now) {
    const telegram = dispatcher.delayedTelegrams.pop();
    dispatcher.dispatchMessage(telegram.sender, telegram.receiver, telegram.message);
  }
}, 1000); // 每1秒处理一次延迟消息

以上例子展示了如何使用delayedTelegrams属性在特定时间发送消息。在这个例子中,我们向delayedTelegrams数组中添加了一条延迟5秒后发送的消息,并使用一个定时器来每1秒检查是否有延迟消息应该被发送,并调用dispatchMessage()方法来分发消息。