ImplicitAnimationCollection 类

定义

满足条件时触发的动画集合。

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))
继承
Object Platform::Object IInspectable CompositionObject ImplicitAnimationCollection
属性
实现

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 上的以下属性:

属性

Comment

要与 CompositionObject 关联的字符串。

(继承自 CompositionObject)
Compositor

用于创建此 CompositionObjectCompositor

(继承自 CompositionObject)
Dispatcher

CompositionObject 的调度程序。

(继承自 CompositionObject)
DispatcherQueue

获取 CompostionObject 的 DispatcherQueue

(继承自 CompositionObject)
ImplicitAnimations

附加到此 对象的隐式动画的集合。

(继承自 CompositionObject)
Properties

CompositionObject 关联的属性的集合。

(继承自 CompositionObject)
Size

集合的大小。

方法

Clear()

从集合中删除所有动画。

Close()

关闭 CompositionObject 并释放系统资源。

(继承自 CompositionObject)
ConnectAnimation(String, CompositionAnimation)

连接和动画。

(继承自 CompositionObject)
DisconnectAnimation(String)

断开动画的连接。

(继承自 CompositionObject)
Dispose()

执行与释放或重置非托管资源关联的应用程序定义的任务。

(继承自 CompositionObject)
First()

检索集合中的第一个动画。

GetView()

返回集合的地图视图。

HasKey(String)

返回一个布尔值,该值指示集合是否包含指定的键。

Insert(String, ICompositionAnimationBase)

将动画插入到集合中。

Lookup(String)

检索与指定属性关联的动画。

PopulatePropertyInfo(String, AnimationPropertyInfo)

定义可进行动画处理的属性。

(继承自 CompositionObject)
Remove(String)

从集合中删除指定的动画。

StartAnimation(String, CompositionAnimation)

将动画与 对象的指定属性连接,并启动动画。

(继承自 CompositionObject)
StartAnimation(String, CompositionAnimation, AnimationController)

将动画与 对象的指定属性连接,并启动动画。

(继承自 CompositionObject)
StartAnimationGroup(ICompositionAnimationBase)

启动动画组。

使用 CompositionObject 上的 StartAnimationGroup 方法可以启动 CompositionAnimationGroup。 组中的所有动画都将在 对象上同时启动。

(继承自 CompositionObject)
StopAnimation(String)

断开动画与指定属性的连接,并停止动画。

(继承自 CompositionObject)
StopAnimationGroup(ICompositionAnimationBase)

停止动画组。

(继承自 CompositionObject)
TryGetAnimationController(String)

返回指定属性上运行的动画的 AnimationController。

(继承自 CompositionObject)

适用于

另请参阅