2

私は Metro スタイル開発の初心者です。10 から 0 までのカウントダウン タイマーが必要な小さなゲームを作成しようとしました。しかし、この Visual Studio にはタイマー コンポーネントがなく、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 スタイル アプリでタイマーを実装する方法 ですが、これは役に立ちません。

このカウントダウン タイマーで何ができますか?

4

2 に答える 2

3

WinRT XAML Toolkitには、あなたにも役立つCountdownControlがあります。これは基本的に、イベント間で 1 秒かかるアニメーションを使用しています。別のオプションは、async/await キーワードを使用することです。基本的には await Task.Delay(1000) と言って 1 秒間待機し、ループで呼び出して秒数をカウントダウンできます。これも移植可能でしょう。

于 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 に答える