地铁App的倒数计时器

时间:2012-05-04 19:52:48

标签: c# windows-runtime visual-studio-2012 countdowntimer winrt-xaml

我是Metro Style Developing的初学者, 我试图制作一个需要定时器的小游戏,倒数从10到0。 但是在这个Visual Studio中没有Timer Component,而DispatcherTimer没有映射到xmlns。

我试图使用TimeSpan,这个字段有“TicksPerSecond”但是这个例子不能帮助我制作我的倒数计时器: http://msdn.microsoft.com/en-us/library/system.timespan.tickspersecond.aspx

TimeSpan也有这个方法“FromSeconds”,我也不能将这个用于我的倒数计时器: http://msdn.microsoft.com/en-us/library/system.timespan.fromseconds.aspx

我也在stackoverflow上阅读这个问题: How to Implement a timer in Metro Style App 但这没用。

我可以为倒数计时器做些什么?

2 个答案:

答案 0 :(得分:3)

CountdownControl中有一个WinRT XAML Toolkit也可以帮助你 - 它基本上是使用一个事件之间需要1秒的动画。另一种选择是使用async / await关键字 - 你基本上可以说等待Task.Delay(1000)等待一秒钟并在一个循环中调用它来倒数秒。这也是便携式的。

答案 1 :(得分:0)

我不确定xmlns是什么意思,你想在XAML中使用DispatcherTimer吗?好吧,这是不可能的,但这不是什么大问题,只需在你的代码中使用它。

在我的应用程序中,我正在密切使用Reactive Extensions。 Rx v2.0 Beta支持winrt,因此计时器问题可以通过以下方式解决(再次在后面的代码中,而不是在XAML中):

Observable.Interval(TimeSpan.FromSeconds(1)).Take(10).ForEachAsync(x =>
{
    Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => 
    {
        new MessageDialog("seconds: " + (10-x), "timer").ShowAsync();
    });
});

这种方法的一大优点 - 您的代码在框架之间更容易移植。希望这会有所帮助。