在一次调用中动画大量对象

时间:2011-06-28 11:44:47

标签: graphics 2d

我正在研究一些代码来动画对象..目前我有这样的东西(伪代码)..

class Sprite:
    x = 0
    y = 0
    def animate(fps=10):
        x += blah
        y += blah
        time.sleep(1000 / fps)
        self.animate()

mario = new Sprite()
mario.animate(fps=10)

bird = new Sprite()
bird.animate(fps=5)

正如您所看到的,对于每个创建的精灵,它的动画功能会改变它的x和y位置,并且fps计算很简单。我想要实现的是这样的:

instances = []
fps = 30

def animate():
    for each object in instances:
        # NEED AN 'IF TIME TO ANIMATE?' PART HERE.
        object.x = blah
        object.y = blah
    time.sleep(1 / fps)
    animate()

class Sprite:
    x = 0
    y = 0
    def animate(fps = 5):
        instances.append(self)

mario = new Sprite()
mario.animate(fps=10)

bird = new Sprite()
bird.animate(fps=5)

这与第一段伪代码之间的区别在于第二段有一个动画调用来动画每个对象。我只是不确定你将如何准确地确定何时为每个对象设置动画。这个(当前)工作的唯一方法是每个对象/精灵具有相同的FPS。

1 个答案:

答案 0 :(得分:1)

Sprite课程添加一个属性,以保留上次动画的时间。然后,您可以轻松计算是否需要更改框架。

if CurrentTime - mario.lastAnimTime > rate then
   mario.lastAnimTime = CurrentTime
   // Change frame...