Для основного цикла моей игры, что я должен учитывать: DispatcherTimer Vs StoryBoard - PullRequest
2 голосов
/ 15 сентября 2009

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

DispatcherTimer помог мне в реализации этого, я наткнулся на эту статью

http://blogs.silverlight.net/blogs/msnow/archive/2008/07/09/storyboard-versus-dispatchertimer-for-animation-and-game-loops.aspx

согласно этому подход StoryBoard лучше, чем диспетчерский. Этот блог для Silverlight, я все еще ищу в документах MSDN, если раскадровка WPF также запущена во второй теме. Кто-нибудь знает, имеет ли таймер раскадровки в WPF преимущества перед диспетчерским таймером.

Ответы [ 2 ]

4 голосов
/ 15 сентября 2009

Вы также можете попробовать использовать событие CompositionTarget.Rendering, просто держитесь подальше от StoryBoard. Вот несколько ссылок о CompositionTarget.Rendering:

Как выполнить рендеринг с интервалом за кадр с использованием CompositionTarget

Silverlight CompositionTarget. Цикл рендеринга игры

Веселье с анимацией, часть 1 - CompositionTarget.Rendering

2 голосов
/ 15 сентября 2009

Я бы сказал, что, поскольку он пришел из официального блога, он, вероятно, является правильным, и его преимущества перечислены в этом посте. Этот пост был написан старшим руководителем SDET в команде веб-инструментов в Microsoft. Поэтому я должен был бы предположить, что то, что он говорит, заслуживает внимания.

Исходя из моего исследования, причины, по которым StoryboardTimer лучше, чем DispatcherTimer, заключаются в следующем:

  1. StoryBoard обрабатывается в отдельном потоке, на который не влияет поток пользовательского интерфейса, на котором находится DispatcherTimer.
  2. DispatcherTimer - это таймер с более низким разрешением, чем таймер класса Storyboard, что приводит к потере точности.
  3. Исполнение раскадровки более стабильно в разных поддерживаемых ОС и веб-браузерах.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...