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 之类的时间轴具有 BeginTime 属性,但我已经看到并验证了长动画持续时间(如 1 分钟或以上)在 WinRT 中遇到错误的报告。

编辑*(代码示例)

我通常用来按时间间隔触发事件的两种简单方法是使用带有回调事件的 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 回答