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
當您使用 ComposeHandoffBehavior將 Storyboard、AnimationTimeline或 AnimationClock 套用至屬性時,先前與該屬性相關聯的任何 Clock 對象都會繼續取用系統資源:計時系統不會自動移除時鐘。
若要避免當您使用 Compose套用大量時鐘時發生效能問題,您應該在時鐘完成之後,從動畫屬性中移除撰寫時鐘。 有數種方式可以移除時鐘:
若要從 屬性中移除所有時鐘,請使用動畫物件的 ApplyAnimationClock(DependencyProperty, AnimationClock) 或 BeginAnimation(DependencyProperty, AnimationTimeline) 方法。 將動畫屬性指定為第一個參數,並將
null
指定為第二個參數。 這會從屬性中移除所有動畫時鐘。若要從時鐘清單中移除特定 AnimationClock,請使用 AnimationClock 的 Controller 屬性來擷取 ClockController,然後呼叫 ClockController的 Remove 方法。 這通常是在時鐘的 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
當您使用 ComposeHandoffBehavior將 Storyboard、AnimationTimeline或 AnimationClock 套用至屬性時,先前與該屬性相關聯的任何 Clock 對象都會繼續取用系統資源:計時系統不會自動移除時鐘。
若要避免當您使用 Compose套用大量時鐘時發生效能問題,您應該在時鐘完成之後,從動畫屬性中移除撰寫時鐘。 有數種方式可以移除時鐘:
若要從 屬性中移除所有時鐘,請使用動畫物件的 ApplyAnimationClock(DependencyProperty, AnimationClock) 或 BeginAnimation(DependencyProperty, AnimationTimeline) 方法。 將動畫屬性指定為第一個參數,並將
null
指定為第二個參數。 這會從屬性中移除所有動畫時鐘。若要從時鐘清單中移除特定 AnimationClock,請使用 AnimationClock 的 Controller 屬性來擷取 ClockController,然後呼叫 ClockController的 Remove 方法。 這通常是在時鐘的 Completed 事件處理程式中完成。 請注意,只有根時鐘可以由 ClockController控制;子時鐘的 Controller 屬性會傳回
null
。 另請注意,如果時鐘的有效持續時間是永遠的,則不會引發 Completed 事件。 在這裡情況下,使用者必須判斷何時呼叫 Remove。
這主要是物件上具有較長存留期之動畫的問題。 當物件被垃圾收集時,其時鐘也會中斷連線並垃圾收集。
如需時鐘物件的詳細資訊,請參閱 動畫和計時系統概觀。