我目前正在进行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之外处理的。
答案 0 :(得分:1)
如果你的对象负责在屏幕上绘制自己,那么每个对象都应该有自己的线程。但只有UIThread才能操纵GUI。因此,您应该将代码放在对象之外的超级对象(游戏板之王)中,它将告诉所有对象计算其位置,让他们刷新并定义是否必须暂停。
如果从一个中心点(一个线程)刷新UI,则只应在计算所有对象的位置并重新绘制屏幕时使用Thread.Sleep。
无论如何,你对象中的Thread.Sleep并不是很好。
塞尔