ImplicitAnimationCollection 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
满足条件时触发的动画集合。
public ref class ImplicitAnimationCollection sealed : CompositionObject, IIterable<IKeyValuePair<Platform::String ^, ICompositionAnimationBase ^> ^>, IMap<Platform::String ^, ICompositionAnimationBase ^>
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 196608)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class ImplicitAnimationCollection final : CompositionObject, IIterable<IKeyValuePair<winrt::hstring, ICompositionAnimationBase const&>>, IMap<winrt::hstring, ICompositionAnimationBase const&>
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 196608)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class ImplicitAnimationCollection : CompositionObject, IDictionary<string,ICompositionAnimationBase>, IEnumerable<KeyValuePair<string,ICompositionAnimationBase>>
Public NotInheritable Class ImplicitAnimationCollection
Inherits CompositionObject
Implements IDictionary(Of String, ICompositionAnimationBase), IEnumerable(Of KeyValuePair(Of String, ICompositionAnimationBase))
- 继承
- 属性
- 实现
-
IDictionary<String,ICompositionAnimationBase> IMap<Platform::String,ICompositionAnimationBase> IMap<winrt::hstring,ICompositionAnimationBase> IIterable<IKeyValuePair<K,V>> IEnumerable<KeyValuePair<K,V>> IEnumerable<KeyValuePair<String,ICompositionAnimationBase>> IIterable<IKeyValuePair<Platform::String,ICompositionAnimationBase>> IIterable<IKeyValuePair<winrt::hstring,ICompositionAnimationBase>>
Windows 要求
设备系列 |
Windows 10 Anniversary Edition (在 10.0.14393.0 中引入)
|
API contract |
Windows.Foundation.UniversalApiContract (在 v3.0 中引入)
|
示例
class PropertyAnimation
{
PropertyAnimation(Compositor compositor, SpriteVisual heroVisual, SpriteVisual listVisual)
{
// Define ImplicitAnimationCollection
ImplicitAnimationCollection implicitAnimations = compositor.CreateImplicitAnimationCollection();
// Trigger animation when the “Offset” property changes.
implicitAnimations["Offset"] = CreateAnimation(compositor);
// Assign ImplicitAnimations to a visual. Unlike Visual.Children,
// ImplicitAnimations can be shared by multiple visuals so that they
// share the same implicit animation behavior (same as Visual.Clip).
heroVisual.ImplicitAnimations = implicitAnimations;
// ImplicitAnimations can be shared among visuals
listVisual.ImplicitAnimations = implicitAnimations;
listVisual.Offset = new Vector3(20f, 20f, 20f);
}
Vector3KeyFrameAnimation CreateAnimation(Compositor compositor)
{
Vector3KeyFrameAnimation animation = compositor.CreateVector3KeyFrameAnimation();
animation.InsertExpressionKeyFrame(0f, "this.StartingValue");
animation.InsertExpressionKeyFrame(1f, "this.FinalValue");
animation.Target = “Offset”;
animation.Duration = TimeSpan.FromSeconds(0.25);
return animation;
}
}
注解
隐式动画允许通过指定触发条件来驱动动画,而无需手动定义动画行为。 它们有助于将动画启动逻辑与核心应用逻辑分离。 定义应触发这些动画的动画和事件。 然后,当满足适当的触发条件时,合成器执行设置的动画。
触发器
Condition 充当 ImplicitAnimationCollection 的触发器。 这些触发器是 CompositionObject 可进行动画处理的属性。 对于Windows 10周年更新仅支持可视动画属性作为触发器。
this.FinalValue
这是“合成表达式系统”中的一个特殊关键字 (keyword) ,开发人员可以使用该系统对动画进行模板化,并让平台将其绑定到目标属性的 API 值。
动画将支持此功能。FinalValue 关键字 (keyword) 为有效的关键字 (keyword) 来表示动画的目标属性的最终值。
- 隐式动画 – 此。FinalValue 将设置为直接分配给相应目标属性的最后一个值。 例如,直接将视觉对象的 Offset 属性分配给时,面向 Offset 属性的隐式动画将 具有此属性。FinalValue 设置为 Vector3 类型的新 Offset 值。 其他面向不同属性的隐式动画(如 大小 )仍可以使用 此。模板中的 FinalValue ,在本例中 为 。FinalValue 将设置为 Vector2 类型的 Size 属性的当前值。 请注意,在后一种情况下 ,这是。FinalValue 将 如下所示。StartingValue 。 这提供了一个定义完善的行为,并使开发人员能够轻松创作动画模板 。无论 哪个属性触发了更改,FinalValue 都将始终解析为有效值。
- 显式动画:默认情况下,它将具有与隐式动画的情况相同的行为,在这种情况下 ,FinalValue 将设置为属性直接设置为的最后一个值。 例如,面向 Size 属性的动画将 具有此属性。FinalValue 解析为 API 层上最后一个已知的 Size 值。 换句话说, 这是。FinalValue 将 如下所示。StartingValue 。 开发人员将能够替代该行为并设置 此行为。通过将 FinalValue 显式设置为动画参数,将其设置为其他值。
ImplicitAnimationCollection 和 CompositionAnimationGroup 的事件和目标属性
ImplicitAnimationCollection 允许你添加触发器,隐式动画将监视更改并启动开发人员提供的相关动画。 ImplicitAnimationCollection 支持所有可视动画属性,这些属性也用作动画的目标属性。 必须在动画上定义目标,否则它将引发异常。
implicitAnimationCollection[“Offset”] = offsetAnimationGroup;
CompositionAnimationGroup 包含 CompositionAnimation 的列表,可在其中将其作为单个逻辑单元触发。 组中的每个 CompositionAnimation 都应设置目标属性。
CompositionAnimationGroup.Add(opacityKeyFrameAnimation);
CompositionAnimationGroup.Insert(sizeKeyFrameAnimation);
ImplicitAnimationCollection 支持 Visual 上的以下属性:
- AnchorPoint
- CenterPoint
- Offset
- 不透明度
- 方向
- RotationAngle
- RotationAngleInDegrees
- RotationAxis
- 缩放
- 大小 如果再次设置相同的值,则不会发生动画,因为以前的值和新值之间没有增量。
属性
Comment |
要与 CompositionObject 关联的字符串。 (继承自 CompositionObject) |
Compositor |
用于创建此 CompositionObject 的 Compositor。 (继承自 CompositionObject) |
Dispatcher |
CompositionObject 的调度程序。 (继承自 CompositionObject) |
DispatcherQueue |
获取 CompostionObject 的 DispatcherQueue 。 (继承自 CompositionObject) |
ImplicitAnimations |
附加到此 对象的隐式动画的集合。 (继承自 CompositionObject) |
Properties |
与 CompositionObject 关联的属性的集合。 (继承自 CompositionObject) |
Size |
集合的大小。 |