包含此页的版本:
不含此页的版本:
转换事件会通知您转换状态的变化。
UI Toolkit 在VisualElement的 style 属性被修改。更改VisualElement属性立即在视觉上反映出来。但是,您可以使用transitionUSS 财产在初始结果和最终结果之间逐渐插值。
转换的生命周期有以下阶段:
一个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被发送。
下表描述了转换事件及其传播阶段:
| 事件 | 描述 | 涓涓细流 | 气泡升起 | 可取消 |
|---|---|---|---|---|
| 过渡运行事件 | 创建过渡时发送。 | 是的 | ||
| 过渡开始事件 | 在过渡的延迟阶段结束并过渡开始时发送。 | 是的 | ||
| 过渡结束事件 | 转换结束时发送。 | 是的 | ||
| 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之-3seconds 和transition-duration之5秒,则TransitionRunEvent和TransitionStartEvent与elapsedTime属性设置为3秒,过渡实际上从五秒动画的第三秒开始。
本节介绍target,stylePropertyNames和elapsedTime每个过渡事件。
一个TransitionRunEvent创建过渡时发送事件。
target:执行过渡的元素。stylePropertyNames:过渡修改的属性列表。elapsedTime:自转换开始以来的时间。一个TransitionStartEvent当过渡的延迟阶段结束并且过渡开始时发送事件。
target:执行过渡的元素。stylePropertyNames:过渡修改的属性列表。elapsedTime:自转换开始以来的时间。一个TransitionEndEvent当过渡结束时发送事件。
target:执行过渡的元素。stylePropertyNames:过渡修改的属性列表。elapsedTime:自转换开始以来的时间。
注意:TransitionEndEvent如果没有要转换的先前样式状态,例如首次应用或修改样式而没有初始值时,则可能不会触发。发生这种情况是因为 UI 工具包在无法检测到缓存值的更改时跳过转换。要解决此问题,请在应用触发过渡的更改之前设置初始样式值,或者使用schedule.Execute.
一个TransitionCancelEvent当转换被再次更改的属性中断时,会发送事件。
target:执行过渡的元素。stylePropertyNames:过渡修改的属性列表。elapsedTime:自转换开始以来的时间。TransitionEndEvent以创建循环的过渡。