2

私はメトロスタイル開発の初心者です タイマー、カウントダウンが10から0までの小さなゲームを作ろうとしました。 しかし、このVisual Studioではタイマーコンポーネントはなく、DispatcherTimer xmlnsにマップされていません。メトロアプリのカウントダウンアプリ

私は、このフィールド「TicksPerSecond」を持っていること、のTimeSpanを使用しようとしたが、この例では、私のカウントダウンタイマーを作るために私を助けdosen't: 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の時にこの質問を読む:tはまた私のカウントダウンタイマーのために、このいずれかを使用 How to Implement a timer in Metro Style App をが、これは有用ではありません。

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

+0

この質問に対する回答は、どのように役立ちますか? DispatcherTimerクラスを使用してください:http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.dispatchertimer.aspx –

答えて

0

xmlnsは何を意味するのですか?XAMLでDispatcherTimerを使用しますか?それは可能ではありませんが、大したことではありません。あなたのコードから使用してください。

私のアプリケーションでは、私は集中的にReactive Extensionsを使用しています。 Rxのv2.0のベータ版は、WinRTのをサポートしていますので、タイマーの問題は、(再び背後にあるコードではなく、XAMLで)、次の方法で解決することができます

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

このアプローチの大きなプラス - あなたのコードをしますフレームワーク間で移植性が向上します。お役に立てれば。

3

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

+0

フィリップ、 私はこの前にWinRTを使用しません、私はソースをダウンロードしてください、私は私のプロジェクトの参照に追加するdllファイルを見つけることができません。私はこれに慣れていない。 次に、Task.Delay(1000)を使用しようとしましたが、この関数を定義しています:Public async Task dellay() { await task.Delay(1000) } そしてこの関数を呼び出します。この「Task.Delay(1000)」のみを使用しようとしましたが、これは私の「dellay」関数のように同じ結果を持っています –

+0

NuGetを使用して、WinRTプロジェクトへの参照を追加してください。 –

+0

あなたはWinRTのためにそれを行う方法へのリンクを持っていますか、それはWindows Phoneと同じですか? –

関連する問題