过渡事件会通知您过渡状态的变化。
当 VisualElement
的样式属性被修改时,UI 工具包会使用过渡。VisualElement
属性的更改会立即在视觉上反映出来。但是,您可以使用 transition
USS 属性 来逐渐在初始结果和最终结果之间进行插值。
过渡的生命周期包含以下阶段
当您执行以下操作时,VisualElement
的属性会被修改
element.ToggleInClassList()
(其中 element
是任何 VisualElement
)。:hover
。style
属性。例如:element.style.backgroundColor = Color.red;
(其中 element
是任何 VisualElement
)。发送 TransitionRunEvent
。
如果正在更改的属性的已解析 transition-delay
属性的值不为 0
,则在延迟持续时间内不会发生任何事情。
延迟结束后,会发送 TransitionStartEvent
,并且过渡以属性的初始值开始。
在 transition-duration
设置的时间长度内,过渡发生。在此期间,属性从其初始值变为其最终值。
如果在过渡期间将属性更改为新值,则会发送 TransitionCancelEvent
。过渡过程从步骤 2 重新开始。
transition-duration
结束后,属性设置为其最终值。发送 TransitionEndEvent
。
下表描述了过渡事件及其传播阶段
事件 | 描述 | 向下传递 | 向上冒泡 | 可取消 |
---|---|---|---|---|
TransitionRunEvent | 创建过渡时发送。 | 是 | ||
TransitionStartEvent | 过渡的延迟阶段结束且过渡开始时发送。 | 是 | ||
TransitionEndEvent | 过渡结束时发送。 | 是 | ||
TransitionCancelEvent | 取消过渡时发送。 | 是 |
每个过渡属性都有自己的生命周期和自己的过渡事件。您可以使用事件的 stylePropertyNames
属性访问当前属性。
如果更改了简写 USS 属性,则每个组件也会获得自己的生命周期。例如,如果更改 margin
,则 margin-left
、margin-right
、margin-top
和 margin-bottom
都会获得自己的 TransitionRunEvent
、TransitionStartEvent
和 TransitionEndEvent
,总共有 12 个独立的事件。
如果将 transition-delay
设置为 0
,则 TransitionRunEvent
和 TransitionStartEvent
会在几毫秒内一个接一个地发送。
如果将 transition-delay
设置为小于 0
的值,则过渡不会从一开始就启动。例如,如果 transition-delay
为 -3
秒,transition-duration
为 5
秒,则 TransitionRunEvent
和 TransitionStartEvent
会以 elapsedTime
属性设置为 3
秒发送,并且过渡实际上从五秒动画的第三秒开始。
本节描述了每个过渡事件的 target
、stylePropertyNames
和 elapsedTime
。
创建过渡时会发送 TransitionRunEvent
事件。
target
:执行过渡的元素。stylePropertyNames
:过渡修改的属性列表。elapsedTime
:自过渡开始以来的时间。过渡的延迟阶段结束且过渡开始时会发送 TransitionStartEvent
事件。
target
:执行过渡的元素。stylePropertyNames
:过渡修改的属性列表。elapsedTime
:自过渡开始以来的时间。过渡结束时会发送 TransitionEndEvent
事件。
target
:执行过渡的元素。stylePropertyNames
:过渡修改的属性列表。elapsedTime
:自过渡开始以来的时间。当属性再次更改中断过渡时,会发送 TransitionCancelEvent
事件。
target
:执行过渡的元素。stylePropertyNames
:过渡修改的属性列表。elapsedTime
:自过渡开始以来的时间。TransitionEndEvent
创建循环过渡。