Metro应用的倒数计时器
我是Metro Style Develop的初学者,我试图制作一个需要定时器的小游戏,倒计时从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上阅读了这个问题: 如何在Metro Style App中实现计时器,但这没用。
我能为这个倒数计时器做些什么?
WinRT XAML工具包中有一个CountdownControl也可以帮助你 – 它基本上是使用一个事件之间需要1秒的动画。 另一个选择是使用async / await关键字 – 你基本上可以说等待Task.Delay(1000)等待一秒钟并在循环中调用它来倒数秒。 这也是便携式的。
我不确定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(); }); });
这种方法的一大优点 – 您的代码在框架之间更容易移植。 希望这可以帮助。