4

アニメーションが特定のキーフレームに達したときにメソッドを呼び出す必要があります。アニメーションが特定のキーフレームに達したときにイベントをトリガーすることは可能ですか? そうでない場合、特定の時間にイベントをトリガーするより良い方法はありますか?

4

1 に答える 1

5

イベントに関しては、Silverlight のタイムラインは非常に限られています。私が知る限り、Completed イベントのみがサポートされています。ただし、できることは、1 つのストーリーボード内に 2 つのタイムラインを配置することです。2 番目のタイムラインは、監視できるバインドされたプロパティを更新しています。

たぶん次のようなもの:

<Storyboard>
    <DoubleAnimationusingKeyFrames ... />
    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="TriggerEvent">
        <ObjectKeyFrame KeyTime="00:00:01" Value="True" />
    <ObjectAnimationUsingKeyFrames>
</Storyboard>

次に、コントロールのコード ビハインドで、ブール型の TriggerEvent という依存関係プロパティを定義します。true に変わったら、メソッドを呼び出します。

ただし、おそらく実際にはより良い別のオプションは、元のアニメーションを 2 つの並列タイムラインに分割し、Completed イベント ハンドラーを最初のタイムライン (メソッドを呼び出すために使用する) に接続し、次に 2 番目のタイムラインで使用することです。 BeginTime プロパティを使用して 2 つのアニメーションを同期し、最初のアニメーションが完了すると同時に 2 番目のアニメーションが開始されるようにします。

<Storyboard>
    <!-- Timeline 1 -->
    <DoubleAnimationusingKeyFrames Completed="MyCompletedHandler" ... />
    <!-- Timeline 2 -->
    <DoubleAnimationUsingKeyFrames BeginTime="00:00:01" ... />
</Storyboard>
于 2010-05-20T23:20:50.860 に答える