gpt4 book ai didi

c# - 在Silverlight中同时对多个对象进行动画处理

转载 作者:行者123 更新时间:2023-12-03 10:38:45 27 4
gpt4 key购买 nike

我目前正在开发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处理的。

最佳答案

如果您的对象负责在屏幕上进行绘制,则每个对象应具有自己的线程。但是只有UIThread才可以操纵GUI。因此,您应该将代码放置在对象之外的一个 super 对象(游戏板之王)中,该对象将告诉您所有对象计算其位置,要求它们刷新并定义是否必须暂停。

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

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

哔叽

关于c# - 在Silverlight中同时对多个对象进行动画处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13401097/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com