版本:Unity 6 (6000.0)
语言:英语
工具提示事件
上下文菜单事件

过渡事件

过渡事件会通知您过渡状态的变化。

VisualElement 的样式属性被修改时,UI 工具包会使用过渡。VisualElement 属性的更改会立即在视觉上反映出来。但是,您可以使用 transition USS 属性 来逐渐在初始结果和最终结果之间进行插值。

过渡的生命周期

过渡的生命周期包含以下阶段

  1. 当您执行以下操作时,VisualElement 的属性会被修改

    • 使用 C# 方法添加或移除类。例如:element.ToggleInClassList()(其中 element 是任何 VisualElement)。
    • 使用带有选择器的 USS,例如 :hover
    • 操作元素的 style 属性。例如:element.style.backgroundColor = Color.red;(其中 element 是任何 VisualElement)。
  2. 发送 TransitionRunEvent

  3. 如果正在更改的属性的已解析 transition-delay 属性的值不为 0,则在延迟持续时间内不会发生任何事情。

  4. 延迟结束后,会发送 TransitionStartEvent,并且过渡以属性的初始值开始。

  5. transition-duration 设置的时间长度内,过渡发生。在此期间,属性从其初始值变为其最终值。

  6. 如果在过渡期间将属性更改为新值,则会发送 TransitionCancelEvent。过渡过程从步骤 2 重新开始。

  7. transition-duration 结束后,属性设置为其最终值。发送 TransitionEndEvent

过渡事件参考表

下表描述了过渡事件及其传播阶段

事件 描述 向下传递 向上冒泡 可取消
TransitionRunEvent 创建过渡时发送。
TransitionStartEvent 过渡的延迟阶段结束且过渡开始时发送。
TransitionEndEvent 过渡结束时发送。
TransitionCancelEvent 取消过渡时发送。

行为

每个过渡属性都有自己的生命周期和自己的过渡事件。您可以使用事件的 stylePropertyNames 属性访问当前属性。

如果更改了简写 USS 属性,则每个组件也会获得自己的生命周期。例如,如果更改 margin,则 margin-leftmargin-rightmargin-topmargin-bottom 都会获得自己的 TransitionRunEventTransitionStartEventTransitionEndEvent,总共有 12 个独立的事件。

如果将 transition-delay 设置为 0,则 TransitionRunEventTransitionStartEvent 会在几毫秒内一个接一个地发送。

如果将 transition-delay 设置为小于 0 的值,则过渡不会从一开始就启动。例如,如果 transition-delay-3 秒,transition-duration5 秒,则 TransitionRunEventTransitionStartEvent 会以 elapsedTime 属性设置为 3 秒发送,并且过渡实际上从五秒动画的第三秒开始。

事件列表

本节描述了每个过渡事件的 targetstylePropertyNameselapsedTime

TransitionRunEvent

创建过渡时会发送 TransitionRunEvent 事件。

  • target:执行过渡的元素。
  • stylePropertyNames:过渡修改的属性列表。
  • elapsedTime:自过渡开始以来的时间。

TransitionStartEvent

过渡的延迟阶段结束且过渡开始时会发送 TransitionStartEvent 事件。

  • target:执行过渡的元素。
  • stylePropertyNames:过渡修改的属性列表。
  • elapsedTime:自过渡开始以来的时间。

TransitionEndEvent

过渡结束时会发送 TransitionEndEvent 事件。

  • target:执行过渡的元素。
  • stylePropertyNames:过渡修改的属性列表。
  • elapsedTime:自过渡开始以来的时间。

TransitionCancelEvent

当属性再次更改中断过渡时,会发送 TransitionCancelEvent 事件。

  • target:执行过渡的元素。
  • stylePropertyNames:过渡修改的属性列表。
  • elapsedTime:自过渡开始以来的时间。

示例

其他资源

工具提示事件
上下文菜单事件