FrameworkElement.BeginStoryboard メソッド

定義

指定されたストーリーボードに含まれる一連のアクションを開始します。

オーバーロード

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指定されていないシグネチャの場合、アニメーションに関連付けられているタイムライン クロックは、アニメーションが "塗りつぶし" 期間に達するとすぐに削除されます。 そのため、1 回実行した後にアニメーションを再起動することはできません。 また、アニメーションを制御するには、ストーリーボードに 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指定されていないシグネチャの場合、アニメーションに関連付けられているタイムライン クロックは、アニメーションが "塗りつぶし" 期間に達するとすぐに削除されます。 そのため、1 回実行した後にアニメーションを再起動することはできません。 また、アニメーションを制御するには、ストーリーボードに x:Name ディレクティブ が含まれているか、コード内の参照でアクセスできる必要があります。

ハンドオフ動作は、BeginStoryboardの属性として指定できます。

Compose HandoffBehavior の使用

Compose HandoffBehaviorを使用してプロパティに StoryboardAnimationTimeline、または AnimationClock を適用すると、そのプロパティに以前に関連付けられた Clock オブジェクトはシステム リソースを引き続き使用します。タイミング システムはクロックを自動的に削除しません。

Composeを使用して多数のクロックを適用する場合にパフォーマンスの問題を回避するには、完了した後、アニメーション化されたプロパティから作成クロックを削除する必要があります。 クロックを削除するには、いくつかの方法があります。

  • プロパティからすべてのクロックを削除するには、アニメーションオブジェクトの ApplyAnimationClock(DependencyProperty, AnimationClock) または BeginAnimation(DependencyProperty, AnimationTimeline) メソッドを使用します。 アニメーション化するプロパティを最初のパラメーターとして指定し、2 番目のパラメーターとして null します。 これにより、プロパティからすべてのアニメーション クロックが削除されます。

  • クロックの一覧から特定の AnimationClock を削除するには、AnimationClockController プロパティを使用して ClockControllerを取得し、ClockControllerRemove メソッドを呼び出します。 これは通常、クロックの 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指定されていないシグネチャの場合、アニメーションに関連付けられているタイムライン クロックは、アニメーションが "塗りつぶし" 期間に達するとすぐに削除されます。 そのため、1 回実行した後にアニメーションを再起動することはできません。 また、アニメーションを制御するには、ストーリーボードに x:Name ディレクティブ が含まれているか、コード内の参照でアクセスできる必要があります。

ハンドオフ動作は、BeginStoryboardの属性として指定できます。

Compose HandoffBehavior の使用

Compose HandoffBehaviorを使用してプロパティに StoryboardAnimationTimeline、または AnimationClock を適用すると、そのプロパティに以前に関連付けられた Clock オブジェクトはシステム リソースを引き続き使用します。タイミング システムはクロックを自動的に削除しません。

Composeを使用して多数のクロックを適用する場合にパフォーマンスの問題を回避するには、完了した後、アニメーション化されたプロパティから作成クロックを削除する必要があります。 クロックを削除するには、いくつかの方法があります。

  • プロパティからすべてのクロックを削除するには、アニメーションオブジェクトの ApplyAnimationClock(DependencyProperty, AnimationClock) または BeginAnimation(DependencyProperty, AnimationTimeline) メソッドを使用します。 アニメーション化するプロパティを最初のパラメーターとして指定し、2 番目のパラメーターとして null します。 これにより、プロパティからすべてのアニメーション クロックが削除されます。

  • クロックの一覧から特定の AnimationClock を削除するには、AnimationClockController プロパティを使用して ClockControllerを取得し、ClockControllerRemove メソッドを呼び出します。 これは通常、クロックの Completed イベント ハンドラーで行われます。 ClockControllerによって制御できるのはルート クロックのみであることに注意してください。子クロックの Controller プロパティは、nullを返します。 また、Completed イベントは、クロックの有効な継続時間が永遠に続く場合は発生しないことにも注意してください。 その場合、ユーザーは Removeを呼び出すタイミングを決定する必要があります。

これは主に、有効期間が長いオブジェクトのアニメーションの問題です。 オブジェクトがガベージ コレクションされると、そのクロックも切断され、ガベージ コレクションされます。

クロック オブジェクトの詳細については、「アニメーションとタイミング システムの概要」を参照してください。

適用対象