Version: 6000.3
语言: 中文
使用事件控制行为
使用纵器捕获指针

分派事件

事件系统一种根据输入(无论是键盘、鼠标、触摸还是自定义输入)向应用程序中的对象发送事件的方法。事件系统由几个组件组成,这些组件协同工作以发送事件。更多信息
请参阅术语表
侦听来自作系统的事件或脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性以及以您喜欢的任何方式响应用户输入。更多信息
请参阅术语表
,然后使用 EventDispatcher 将这些事件分派到视觉元素实例化或派生自 C# 的可视化树的节点VisualElement类。您可以设置外观样式、定义行为并将其作为 UI 的一部分显示在屏幕上。更多信息
请参阅术语表
.事件调度程序为其发送的每个事件确定适当的调度策略。一旦确定,调度员就会执行策略。

视觉元素实现多个事件的默认行为。这涉及创建和执行其他事件。例如,一个PointerMoveEvent可以生成额外的PointerEnterEventPointerLeaveEvent.这些事件进入队列并在当前事件之后进行处理。例如,PointerMoveEventPointerEnterEventPointerLeaveEvent事件。

事件类型的调度行为

每个事件类型都有自己的调度行为。每种事件类型的行为分为两个阶段:

  • 涓滴:在涓滴阶段发送到元素的事件。
  • 冒泡:在冒泡阶段发送到元素的事件。

有关每种事件类型的调度行为列表,请参阅事件参考页面

事件传播

事件调度器选择事件目标后,计算事件的传播路径。传播路径是接收事件的视觉元素的有序列表。传播路径按以下顺序发生:

  1. 路径从可视元素树的根开始,并下降到目标。这是涓滴阶段
  2. 事件目标接收事件。
  3. 然后事件将树上升到树根部。这是泡沫上升阶段
传播路径
传播路径

大多数事件类型都会发送到传播路径上的所有元素。某些事件类型会跳过冒泡阶段,并且某些事件类型仅发送到事件目标。

如果您隐藏或禁用某个元素,它将不会接收事件。事件仍然会传播到隐藏或禁用元素的祖先和后代。

事件目标

当事件沿着传播路径传播时,Event.currentTarget更新处理事件的元素。在事件回调函数中,有两个属性记录调度行为:

事件的目标取决于事件类型。对于指针事件,目标通常是最顶层的可选择元素,直接位于指针下方。对于键盘事件,目标是具有焦点的元素。

UI Toolkit 事件具有target包含对事件发生的元素的引用的属性。对于源自作系统的大多数事件,分派过程会自动查找事件目标。

目标元素存储在EventBase.target并且在调度过程中不会改变。该物业Event.currentTarget当前处理事件的视觉元素的更新。

拣选模式和自定义形状

大多数指针事件使用拾取模式来确定其目标。这VisualElement类有一个pickingMode支持以下值的属性:

您可以覆盖VisualElement.ContainsPoint()执行自定义交集逻辑的方法。

其他资源

使用事件控制行为
使用纵器捕获指针