1

我目前正在进行 Silverlight 游戏。

目前有几个矩形每个都与一个类相关联,它们一次可以很好地动画化:

            foreach (Object O in Objects)
            {
        // Generate Random Number
                    Random rnd = new Random();
                    int r = rnd.Next(40);

                    // Move Object
                    O.Move
             }

Object 中的 Move 方法使用 System.Threading.Thread.Sleep(10) 处理所有动画,包括暂停。

问题在于,此时对象 A 将移动并停止,然后对象 B 将移动并停止,然后对象 C。

一次为所有对象设置动画的最佳方法是什么?

立即想到的策略是为每个对象创建一个单独的线程,但这似乎有很多可能出错的地方。

我正在使用 MVVM,因此所有动画等都是在 XAML 之外处理的。

4

1 回答 1

1

如果您的对象负责在屏幕上绘制自己,那么每个对象都应该有自己的线程。但只有 UIThread 应该操作 GUI。因此,您应该将代码放在对象之外的超级对象(游戏板之王)中,它会告诉所有对象计算它们的位置,要求它们刷新并定义是否必须暂停。

如果 UI 从一个中心点(一个线程)刷新,您应该只在计算所有对象的位置并重绘屏幕时使用 Thread.Sleep。

无论如何,对象中的 Thread.Sleep 并不是很好。

哔叽

于 2012-11-15T15:55:40.863 回答