C# 如何定期设置动画?
我有一个故事板,动画分针滑动6度。现在我想让分针永远每59秒滑动一次。故事板有什么特性吗?或者我可以用其他方法来实现它吗 我的故事板C# 如何定期设置动画?,c#,xaml,windows-8,windows-runtime,winrt-xaml,C#,Xaml,Windows 8,Windows Runtime,Winrt Xaml,我有一个故事板,动画分针滑动6度。现在我想让分针永远每59秒滑动一次。故事板有什么特性吗?或者我可以用其他方法来实现它吗 我的故事板 <Storyboard x:Name="myStoryboard2"> <DoubleAnimation x:Name="m
<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>
尝试以下操作:
<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>
这听起来不像是你想要依靠动画来管理的东西。只需管理每分钟从代码后面开始动画,您就完成了。这样做要比使用神秘的转换器来控制From/to值容易得多。时间线(如DoubleAnimation)具有BeginTime属性,但我已经看到并验证了关于长动画持续时间(如1分钟或以上)在WinRT中遇到bug的报告 编辑*(代码示例) 我通常使用两种简单的方法来间隔触发事件,即使用具有回调事件的Dispatcher或异步循环 一,。调度员
var timer = new DispatcherTimer { Interval = TimeSpane.FromSeconds(1) };
timer.Tick += (s, e) => { /* do your stuff */ };
timer.Start();
二,。异步循环
RunMyLoop();
private async void RunMyLoop()
{
while (true)
{
/* do your stuff */
await Task.Delay(1000);
}
}
持续时间不是表示动画应该播放多长时间而不是何时播放吗?我真的希望这只手在1秒内滑6度,这就是为什么我把持续时间设为1秒。你知道我该怎么做吗?我该怎么每分钟从后面开始制作动画?代码在加载时不会只执行一次吗?如果你不介意的话,你能删掉一些代码吗?非常感谢,我会试试的!