2

分針をアニメーション化して 6 度スライドさせるストーリーボードがあります。今、私は分針を59秒ごとに永遠にスライドさせたい. ストーリーボードのプロパティやその他の方法はありますか?

私の絵コンテ

<Storyboard
                                    x:Name="myStoryboard2">
                                    <DoubleAnimation
                                        x:Name="minuteAnimation"
                                        Storyboard.TargetName="minHandTransform"
                                        Storyboard.TargetProperty="Angle"
                                        Duration="0:0:1"
                                        From="{Binding Time, Converter={StaticResource minuteHandTransform}}"
                                        To="{Binding Time, Converter={StaticResource minuteHandTransform}}"
                                        RepeatBehavior="1x">
                                        <DoubleAnimation.EasingFunction>
                                            <SineEase
                                                EasingMode="EaseOut" />
                                        </DoubleAnimation.EasingFunction>
                                    </DoubleAnimation>
                                </Storyboard>
4

2 に答える 2

1

次のことを試してください。

<Storyboard
                                x:Name="myStoryboard2">
                                <DoubleAnimation
                                    x:Name="minuteAnimation"
                                    Storyboard.TargetName="minHandTransform"
                                    Storyboard.TargetProperty="Angle"
                                    Duration="0:0:59"
                                    From="{Binding Time, Converter={StaticResource minuteHandTransform}}"
                                    To="{Binding Time, Converter={StaticResource minuteHandTransform}}"
                                    RepeatBehavior="Forever">
                                    <DoubleAnimation.EasingFunction>
                                        <SineEase
                                            EasingMode="EaseOut" />
                                    </DoubleAnimation.EasingFunction>
                                </DoubleAnimation>
                            </Storyboard>
于 2013-01-11T07:35:48.213 に答える
1

アニメーションに頼って管理したいものとは思えません。毎分コードビハインドからアニメーションを開始するだけで完了です。暗号化コンバーターを使用して From/To 値を制御するよりも、そのようにする方がはるかに簡単です。DoubleAnimation などの Timeline には BeginTime プロパティがありますが、長いアニメーション時間 (1 分以上など) が WinRT のバグに当たるというレポートを確認して確認しました。

EDIT* (コードサンプル)

一定間隔でイベントをトリガーするためによく使用する 2 つの簡単な方法は、コールバック イベントまたは非同期ループで DispatcherTimer を使用することです。

1.ディスパッチャータイマー

var timer = new DispatcherTimer { Interval = TimeSpane.FromSeconds(1) };
timer.Tick += (s, e) => { /* do your stuff */ };
timer.Start();

2.非同期ループ

RunMyLoop();

private async void RunMyLoop()
{
    while (true)
    {
        /* do your stuff */
        await Task.Delay(1000);
    }
}
于 2013-01-11T20:25:21.257 に答える