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指定されていないシグネチャの場合、アニメーションに関連付けられているタイムライン クロックは、アニメーションが "塗りつぶし" 期間に達するとすぐに削除されます。 そのため、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を使用してプロパティに Storyboard、AnimationTimeline、または AnimationClock を適用すると、そのプロパティに以前に関連付けられた Clock オブジェクトはシステム リソースを引き続き使用します。タイミング システムはクロックを自動的に削除しません。
Composeを使用して多数のクロックを適用する場合にパフォーマンスの問題を回避するには、完了した後、アニメーション化されたプロパティから作成クロックを削除する必要があります。 クロックを削除するには、いくつかの方法があります。
プロパティからすべてのクロックを削除するには、アニメーションオブジェクトの ApplyAnimationClock(DependencyProperty, AnimationClock) または BeginAnimation(DependencyProperty, AnimationTimeline) メソッドを使用します。 アニメーション化するプロパティを最初のパラメーターとして指定し、2 番目のパラメーターとして
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指定されていないシグネチャの場合、アニメーションに関連付けられているタイムライン クロックは、アニメーションが "塗りつぶし" 期間に達するとすぐに削除されます。 そのため、1 回実行した後にアニメーションを再起動することはできません。 また、アニメーションを制御するには、ストーリーボードに x:Name ディレクティブ が含まれているか、コード内の参照でアクセスできる必要があります。
ハンドオフ動作は、BeginStoryboardの属性として指定できます。
Compose HandoffBehavior の使用
Compose HandoffBehaviorを使用してプロパティに Storyboard、AnimationTimeline、または AnimationClock を適用すると、そのプロパティに以前に関連付けられた Clock オブジェクトはシステム リソースを引き続き使用します。タイミング システムはクロックを自動的に削除しません。
Composeを使用して多数のクロックを適用する場合にパフォーマンスの問題を回避するには、完了した後、アニメーション化されたプロパティから作成クロックを削除する必要があります。 クロックを削除するには、いくつかの方法があります。
プロパティからすべてのクロックを削除するには、アニメーションオブジェクトの ApplyAnimationClock(DependencyProperty, AnimationClock) または BeginAnimation(DependencyProperty, AnimationTimeline) メソッドを使用します。 アニメーション化するプロパティを最初のパラメーターとして指定し、2 番目のパラメーターとして
nullします。 これにより、プロパティからすべてのアニメーション クロックが削除されます。クロックの一覧から特定の AnimationClock を削除するには、AnimationClock の Controller プロパティを使用して ClockControllerを取得し、ClockControllerの Remove メソッドを呼び出します。 これは通常、クロックの Completed イベント ハンドラーで行われます。 ClockControllerによって制御できるのはルート クロックのみであることに注意してください。子クロックの Controller プロパティは、
nullを返します。 また、Completed イベントは、クロックの有効な継続時間が永遠に続く場合は発生しないことにも注意してください。 その場合、ユーザーは Removeを呼び出すタイミングを決定する必要があります。
これは主に、有効期間が長いオブジェクトのアニメーションの問題です。 オブジェクトがガベージ コレクションされると、そのクロックも切断され、ガベージ コレクションされます。
クロック オブジェクトの詳細については、「アニメーションとタイミング システムの概要」を参照してください。