Внедрение DispatchTimer в Silverlight Mobile - PullRequest
1 голос
/ 14 ноября 2010

Я работаю над игрой в кости для WP7, которая включает в себя несколько бросков за ход.Во время работы процессора мне нужно замедлить процессы, чтобы пользователь мог видеть, что происходит.Немного покопавшись, я обнаружил, что DispatchTimer можно использовать таким образом.

Проблема в том, что я понятия не имею, как это работает.Просмотр документации MSDN только заставляет меня почесать голову, и в большинстве примеров в Интернете она связана с нажатиями кнопок или щелчками мыши.

Итак, у меня есть цикл do while, который вызывает мою функцию прокрутки костей пятьраз и меняет изображение кости, чтобы показать, каков был результат.

теперь код таймера:

DispatcherTimer dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0,0,1);
dispatcherTimer.Start();

, а затем:

  private void dispatcherTimer_Tick(object sender, EventArgs e)
{
   int i = 0; 
   do
   {
      cpuTurn();
      i++;
   }
   while(i < 6);
}

Но это не работает.Так что я делаю не так?я неправильно использую таймер?

1 Ответ

4 голосов
/ 14 ноября 2010

Да, дисплей не будет обновляться, пока ваш обработчик событий не завершится.Вызовите cpuTurn () только один раз.Переместите счетчик цикла за пределы метода, сделайте его членом класса.Вызовите dispatcherTimer.Stop (), когда он сосчитал до 6. Когда снова очередь процессора, сбросьте счетчик и вызовите Start ().

Google «программирование на основе событий», чтобы узнать больше о виде программированияэто требуется при написании кода GUI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...