0

これはタイマーのコードです。タイマーが0に達したら、gameover.xamlをロードしたいと思います。イベントを接続するにはどうすればよいですか。

    public void StartTimer(object o, RoutedEventArgs sender)
    {
        myDispatcherTimer = new DispatcherTimer();
        myDispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 1000); // 1000 Milliseconds 
        myDispatcherTimer.Tick += new EventHandler(Each_Tick);
        myDispatcherTimer.Start();
    }

    // counter
    int i = 60;


    public void Each_Tick(object o, EventArgs sender)
    {
       timerBlock.Text = "Time: " + i--.ToString() + "s";
    }

そして、これが私のイベントメソッドです

    private void gameOverEvent(object sender, RoutedEventArgs e)
    {
        NavigationService.Navigate(new Uri("/gameOver.xaml", UriKind.Relative));
    }

これどうやってするの -

if (i <= 0)
    something += new EventHandler(gameOverEvent);

何を入れましょうか。

4

3 に答える 3

2

gameOverEventはまったく必要ありません。Each_Tickイベントハンドラーでi=0かどうかを確認し、そうである場合はゲームオーバーページに移動できます。

public void Each_Tick(object o, EventArgs sender) 
{ 
   timerBlock.Text = "Time: " + i--.ToString() + "s";

   if(i = 0)
   {
         NavigationService.Navigate(new Uri("/gameOver.xaml", UriKind.Relative));
   }
}
于 2012-07-21T18:31:53.503 に答える
1
if (i <= 0)
    gameOverEvent(null, null);
于 2012-07-21T15:33:00.153 に答える
1

次のようなクラスにEventhandlerを実装する必要があります

public event EventHandler GameLost;

このクラスからあなたはイベントを起こすことができます

if ((this.GameLost != null) && (i <= 0))
    this.GameLost(this, new EventArgs());

より詳細なガイドについては、このチュートリアルを参照してください。

于 2012-07-21T16:41:16.127 に答える