ImplicitAnimationCollection 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
满足条件时触发的动画集合。
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))
- 继承
- 属性
- 实现
-
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>>
示例
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 上的以下属性:
- AnchorPoint
- CenterPoint
- Offset
- 不透明度
- 方向
- RotationAngle
- RotationAngleInDegrees
- RotationAxis
- 缩放
- 大小 如果再次设置相同的值,则不会发生动画,因为以前值和新值之间没有增量。
属性
Comment |
要与 CompositionObject 关联的字符串。 (继承自 CompositionObject) |
Compositor |
用于创建此 CompositionObject 的 Compositor。 (继承自 CompositionObject) |
DispatcherQueue |
获取 CompositionObject 的 DispatcherQueue。 (继承自 CompositionObject) |
ImplicitAnimations |
附加到此对象的隐式动画集合。 (继承自 CompositionObject) |
Properties |
与 CompositionObject 关联的属性的集合。 (继承自 CompositionObject) |
Size |
集合的大小。 |