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
這是「組合運算式系統」內的特殊關鍵字,開發人員可用來範本化其動畫,並讓平臺將其系結至目標屬性的 API 值。
動畫將支援此功能。FinalValue 關鍵字做為有效的關鍵字,表示動畫之目標屬性的最終值。
- 隱含動畫 – 這是。FinalValue 將會設定為對應目標屬性直接指派給的最後一個值。 例如,當視覺效果的 Offset 屬性直接指派給 時,以 Offset 屬性為目標的隱含動畫將會有 這個。FinalValue 設定為 Vector3 類型的新 Offset 值。 其他以不同屬性為目標的隱含動畫,例如 Size ,仍可使用 這個屬性。範本中的 FinalValue ,在此情況下 為 。FinalValue 將會設定為 Vector2 類型的 Size 屬性目前值。 請注意,在後者的情況下 ,FinalValue 會與 這個相同。StartingValue 。 這會提供定義完善的行為,並讓開發人員輕鬆地撰寫動畫範本 。不論 哪一個屬性已觸發變更,FinalValue 一律會解析為有效的值。
- 明確動畫:根據預設,其行為會與隱含動畫的情況相同,在此情況 中。FinalValue 將會設定為屬性直接設定為的最後一個值。 例如,以 Size 屬性為目標的動畫會有 這個。FinalValue 解析為 API 層上最後已知的 Size 值。 換句話說, 這一點。FinalValue 會與 這個相同。StartingValue 。 開發人員將能夠覆寫該行為並設定 此行為。FinalValue 設定為不同的值,方法是明確地將它設定為動畫參數。
ImplicitAnimationCollection 和 CompositionAnimationGroup 的事件和目標屬性
ImplicitAnimationCollection 可讓您新增可監視變更的隱含動畫的觸發程式,並啟動開發人員所提供的相關動畫。 ImplicitAnimationCollection 支援所有 Visual 可動畫屬性,這些屬性也會當做動畫的目標屬性使用。 目標必須在動畫上定義,否則會擲回例外狀況。
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 |
集合的大小。 |