ImplicitAnimationCollection 类

定义

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

public ref class ImplicitAnimationCollection sealed : CompositionObject, IIterable<IKeyValuePair<Platform::String ^, ICompositionAnimationBase ^> ^>, IMap<Platform::String ^, ICompositionAnimationBase ^>
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.Foundation.LiftedContract, 65536)]
/// [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.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.Foundation.WindowsAppSDKContract, 65536)]
class ImplicitAnimationCollection final : CompositionObject, IIterable<IKeyValuePair<winrt::hstring, ICompositionAnimationBase const&>>, IMap<winrt::hstring, ICompositionAnimationBase const&>
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.Foundation.LiftedContract), 65536)]
[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>>
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.Foundation.WindowsAppSDKContract), 65536)]
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
属性
实现

示例

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; 
  } 
} 

注解

使用隐式动画,可以通过指定触发条件来驱动动画,而无需手动定义动画行为。 它们有助于将动画启动逻辑与核心应用逻辑分离。 定义应触发这些动画的动画和事件。 然后,当满足适当的触发条件时,合成器将执行设置的动画。

触发器

条件充当 ImplicitAnimationCollection 的触发器。 这些触发器是 CompositionObject 动画属性。 对于Windows 10周年更新仅支持将可视可动画属性作为触发器。

this.FinalValue

这是“合成表达式系统”中的一个特殊关键字 (keyword) ,开发人员可以使用它来模板化其动画,并让平台将其绑定到目标属性的 API 值。

动画将支持此功能。FinalValue 关键字 (keyword) 为有效的关键字 (keyword) 来表示动画的目标属性的最终值。

  • 隐式动画 – 此。FinalValue 将设置为对应目标属性直接分配到的最后一个值。 例如,直接将视觉对象的 Offset 属性分配给时,面向 Offset 属性的隐式动画将 具有此属性。FinalValue 设置为 Vector3 类型的新 Offset 值。 其他面向不同属性的隐式动画(如 Size )仍可以使用 此功能。模板中的 FinalValue ,在这种情况下 为 。FinalValue 将设置为 Size 属性的当前值,类型为 Vector2。 请注意,在后一种情况下 ,这是。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

用于创建此 CompositionObject 的 Compositor

(继承自 CompositionObject)
DispatcherQueue

获取 CompositionObject 的 DispatcherQueue。

(继承自 CompositionObject)
ImplicitAnimations

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

(继承自 CompositionObject)
Properties

CompositionObject 关联的属性的集合。

(继承自 CompositionObject)
Size

集合的大小。

方法

Clear()

从集合中删除所有动画。

Close()

关闭 CompositionObject 并释放系统资源。

(继承自 CompositionObject)
Dispose()

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

(继承自 CompositionObject)
First()

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

GetView()

返回集合的地图视图。

HasKey(String)

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

Insert(String, ICompositionAnimationBase)

将动画插入到集合中。

Lookup(String)

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

PopulatePropertyInfo(String, AnimationPropertyInfo)

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

(继承自 CompositionObject)
Remove(String)

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

StartAnimation(String, CompositionAnimation, AnimationController)

使用 对象的指定属性连接动画并启动动画。

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

使用 对象的指定属性连接动画并启动动画。

(继承自 CompositionObject)
StartAnimationGroup(ICompositionAnimationBase)

启动动画组。

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

(继承自 CompositionObject)
StopAnimation(String)

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

(继承自 CompositionObject)
StopAnimationGroup(ICompositionAnimationBase)

停止动画组。

(继承自 CompositionObject)
TryGetAnimationController(String)

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

(继承自 CompositionObject)

适用于

另请参阅