在Silverlight中同时动画多个对象

时间:2012-11-15 15:47:22

标签: c# silverlight mvvm

我目前正在进行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之外处理的。

1 个答案:

答案 0 :(得分:1)

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

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

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

塞尔