FrameworkElement.BeginStoryboard 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
開始提供之腳本中包含的動作順序。
多載
BeginStoryboard(Storyboard) |
開始提供之腳本中包含的動作順序。 |
BeginStoryboard(Storyboard, HandoffBehavior) |
使用若屬性已經顯示動畫時應發生之情形的指定選項,開始提供之腳本中包含的動作順序。 |
BeginStoryboard(Storyboard, HandoffBehavior, Boolean) |
使用控制啟動後之動畫的指定狀態,開始提供之腳本中包含的動作順序。 |
BeginStoryboard(Storyboard)
開始提供之腳本中包含的動作順序。
public:
void BeginStoryboard(System::Windows::Media::Animation::Storyboard ^ storyboard);
public void BeginStoryboard (System.Windows.Media.Animation.Storyboard storyboard);
member this.BeginStoryboard : System.Windows.Media.Animation.Storyboard -> unit
Public Sub BeginStoryboard (storyboard As Storyboard)
參數
- storyboard
- Storyboard
要開始的腳本。
範例
下列範例會 Storyboard 從資源擷取 ,然後在處理內部事件時執行 Storyboard 。
private void OnImage1Animate(object sender, RoutedEventArgs e)
{
Storyboard s;
s = (Storyboard)this.FindResource("RotateStoryboard");
this.BeginStoryboard(s);
}
Private Sub OnImage1Animate(ByVal sender As Object, ByVal e As RoutedEventArgs)
Dim s As Storyboard
s = CType(Me.FindResource("RotateStoryboard"), Storyboard)
Me.BeginStoryboard(s)
End Sub
備註
最常見的動畫案例不會使用這個方法。 一般而言,您會在標記中建立 Storyboard 或 BeginStoryboard 元素,然後將這些專案 EventTrigger 放在元素上。 由 事件觸發時,動畫接著會執行。 的大部分控制項層面 Storyboard 都可以由標記中公開的屬性來處理。
對於未使用 isControllable
、參數或指定 false
該參數的簽章,只要動畫到達 「Fill」 期間,就會移除與動畫相關聯的時間軸時鐘。 因此,執行一次之後,無法重新開機動畫。 控制動畫也需要腳本具有 x:Name 指示 詞,或在程式碼中透過參考存取。
適用於
BeginStoryboard(Storyboard, HandoffBehavior)
使用若屬性已經顯示動畫時應發生之情形的指定選項,開始提供之腳本中包含的動作順序。
public:
void BeginStoryboard(System::Windows::Media::Animation::Storyboard ^ storyboard, System::Windows::Media::Animation::HandoffBehavior handoffBehavior);
public void BeginStoryboard (System.Windows.Media.Animation.Storyboard storyboard, System.Windows.Media.Animation.HandoffBehavior handoffBehavior);
member this.BeginStoryboard : System.Windows.Media.Animation.Storyboard * System.Windows.Media.Animation.HandoffBehavior -> unit
Public Sub BeginStoryboard (storyboard As Storyboard, handoffBehavior As HandoffBehavior)
參數
- storyboard
- Storyboard
要開始的腳本。
- handoffBehavior
- HandoffBehavior
列舉型別的值,其描述若腳本中描述的屬性已顯示動畫時,所要使用的行為。
範例
下列範例會 Storyboard 從資源擷取 ,然後在處理內部事件時執行 Storyboard 。
private void OnImage1Animate(object sender, RoutedEventArgs e)
{
Storyboard s;
s = (Storyboard)this.FindResource("RotateStoryboard");
this.BeginStoryboard(s);
}
Private Sub OnImage1Animate(ByVal sender As Object, ByVal e As RoutedEventArgs)
Dim s As Storyboard
s = CType(Me.FindResource("RotateStoryboard"), Storyboard)
Me.BeginStoryboard(s)
End Sub
備註
最常見的動畫案例不會使用這個方法。 一般而言,您會在標記中建立 Storyboard 或 BeginStoryboard 元素,然後將這些專案 EventTrigger 放在元素上。 由 事件觸發時,動畫接著會執行。 的大部分控制項層面 Storyboard 都可以由標記中公開的屬性來處理。
對於未使用 isControllable
、參數或指定 false
該參數的簽章,只要動畫到達 「Fill」 期間,就會移除與動畫相關聯的時間軸時鐘。 因此,執行一次之後,無法重新開機動畫。 控制動畫也需要腳本具有 x:Name 指示 詞,或在程式碼中透過參考存取。
交握行為可以指定為 的 BeginStoryboard 屬性。
使用 Compose HandoffBehavior
當您使用 HandoffBehaviorCompose 將 、 AnimationTimeline 或 AnimationClock 套用 Storyboard 至 屬性時,先前與該屬性相關聯的任何 Clock 物件會繼續取用系統資源;計時系統不會自動移除時鐘。
若要避免使用 套用 Compose 大量時鐘時的效能問題,您應該在動畫屬性完成之後移除撰寫時鐘。 有數種方式可以移除時鐘:
若要從屬性移除所有時鐘,請使用 ApplyAnimationClock(DependencyProperty, AnimationClock) 動畫物件的 或 BeginAnimation(DependencyProperty, AnimationTimeline) 方法。 指定以動畫顯示的屬性做為第一個參數,並
null
指定為第二個參數。 這會從 屬性中移除所有動畫時鐘。若要從時鐘清單中移除特定 AnimationClock ,請使用 Controller 的 AnimationClock 屬性來擷取 ClockController ,然後呼叫 Remove 的 ClockController 方法。 這通常是在事件處理常式中 Completed 為時鐘完成。 請注意,只有根時鐘可以由 ClockController 控制; Controller 子時鐘的 屬性會
null
傳回 。 另請注意, Completed 如果時鐘的有效持續時間為永久,則不會引發事件。 在此情況下,使用者必須判斷何時呼叫 Remove 。
這主要是在存留期較長的物件才會發生的動畫問題。 當物件被垃圾收集時,其時鐘也會中斷連線並垃圾收集。
如需時鐘物件的詳細資訊,請參閱 動畫和計時系統概觀。
適用於
BeginStoryboard(Storyboard, HandoffBehavior, Boolean)
使用控制啟動後之動畫的指定狀態,開始提供之腳本中包含的動作順序。
public:
void BeginStoryboard(System::Windows::Media::Animation::Storyboard ^ storyboard, System::Windows::Media::Animation::HandoffBehavior handoffBehavior, bool isControllable);
public void BeginStoryboard (System.Windows.Media.Animation.Storyboard storyboard, System.Windows.Media.Animation.HandoffBehavior handoffBehavior, bool isControllable);
member this.BeginStoryboard : System.Windows.Media.Animation.Storyboard * System.Windows.Media.Animation.HandoffBehavior * bool -> unit
Public Sub BeginStoryboard (storyboard As Storyboard, handoffBehavior As HandoffBehavior, isControllable As Boolean)
參數
- storyboard
- Storyboard
要開始的腳本。
- handoffBehavior
- HandoffBehavior
列舉型別的值,其描述若腳本中描述的屬性已顯示動畫時,所要使用的行為。
- isControllable
- Boolean
宣告在動畫啟動後,是否可以控制 (暫停) 該動畫。
備註
最常見的動畫案例不會使用這個方法。 一般而言,您會在標記中建立 Storyboard 或 BeginStoryboard 元素,然後將這些專案 EventTrigger 放在元素上。 由 事件觸發時,動畫接著會執行。 的大部分控制項層面 Storyboard 都可以由標記中公開的屬性來處理。
對於未使用 isControllable
、參數或指定 false
該參數的簽章,只要動畫到達 「Fill」 期間,就會移除與動畫相關聯的時間軸時鐘。 因此,執行一次之後,無法重新開機動畫。 控制動畫也需要腳本具有 x:Name 指示 詞,或在程式碼中透過參考存取。
交握行為可以指定為 的 BeginStoryboard 屬性。
使用 Compose HandoffBehavior
當您使用 HandoffBehaviorCompose 將 、 AnimationTimeline 或 AnimationClock 套用 Storyboard 至 屬性時,先前與該屬性相關聯的任何 Clock 物件會繼續取用系統資源;計時系統不會自動移除時鐘。
若要避免使用 套用 Compose 大量時鐘時的效能問題,您應該在動畫屬性完成之後移除撰寫時鐘。 有數種方式可以移除時鐘:
若要從屬性移除所有時鐘,請使用 ApplyAnimationClock(DependencyProperty, AnimationClock) 動畫物件的 或 BeginAnimation(DependencyProperty, AnimationTimeline) 方法。 指定以動畫顯示的屬性做為第一個參數,並
null
指定為第二個參數。 這會從 屬性中移除所有動畫時鐘。若要從時鐘清單中移除特定 AnimationClock ,請使用 Controller 的 AnimationClock 屬性來擷取 ClockController ,然後呼叫 Remove 的 ClockController 方法。 這通常是在事件處理常式中 Completed 為時鐘完成。 請注意,只有根時鐘可以由 ClockController 控制; Controller 子時鐘的 屬性會
null
傳回 。 另請注意, Completed 如果時鐘的有效持續時間為永久,則不會引發事件。 在此情況下,使用者必須判斷何時呼叫 Remove 。
這主要是在存留期較長的物件才會發生的動畫問題。 當物件被垃圾收集時,其時鐘也會中斷連線並垃圾收集。
如需時鐘物件的詳細資訊,請參閱 動畫和計時系統概觀。
適用於
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應