对于我的游戏的主循环,我应该考虑什么:DispatcherTimer与StoryBoard

时间:2009-09-15 13:24:33

标签: wpf animation multithreading timing

我正在编写一个游戏,我想在游戏主循环中启动一个事件,该事件必须在很短的时间间隔后触发。

DispatcherTimer帮助我实现了这个,我遇到了这篇文章

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

根据它,StoryBoard方法比dispatchertimer更好。这篇博客是针对silverlight的,如果WPF故事板也在第二个帖子上开始,我仍在MSDN文档中搜索。有没有人知道在WPF中使用故事板计时器是否优于调度程序计时器。

2 个答案:

答案 0 :(得分:4)

您也可以尝试使用CompositionTarget.Rendering事件,远离StoryBoard。以下是有关CompositionTarget.Rendering的几个链接:

How to: Render on a Per Frame Interval Using CompositionTarget

Silverlight CompositionTarget.Rendering Game Loop

Fun With Animation Part 1 - CompositionTarget.Rendering

答案 1 :(得分:2)

我会说,因为它来自官方博客,所以它可能是正确的,其优点是该博客文章中列出的那个。该帖子由Microsoft的Web Tools团队的高级SDET主管撰写。所以我不得不假设他所说的话具有价值。

根据我的研究,StoryboardTimer优于DispatcherTimer的原因如下:

  1. StoryBoard是在一个不受DispatcherTimer所在的UI线程影响的单独线程上处理的。
  2. DispatcherTimer是一个比Storyboard类后面的计时器更低分辨率的计时器,这会导致保真度的损失。
  3. 故事板的执行在不同支持的操作系统和Web浏览器中更加稳定。