2

我是 Metro Style Development 的初学者,我尝试制作一个需要计时器的小游戏,从 10 倒计时到 0。但是在这个 Visual Studio 中没有 Timer 组件,并且 DispatcherTimer 没有映射到 xmlns。

我尝试使用具有此字段“TicksPerSecond”的 TimeSpan 但此示例无法帮助我制作倒数计时器: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中实现计时器, 但这没有用。

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

4

2 回答 2

3

WinRT XAML 工具包中有一个CountdownControl也可以为您提供帮助 - 它基本上是使用在事件之间花费 1 秒的动画。另一种选择是使用 async/await 关键字 - 您基本上可以说 await Task.Delay(1000) 等待一秒钟并在循环中调用它以倒计时秒数。这也将是便携式的。

于 2012-05-05T14:02:03.060 回答
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();
    });
});

这种方法的一大优点 - 您的代码将在框架之间更便携。希望这可以帮助。

于 2012-05-05T09:58:14.167 回答