Graphics 在一次调用中设置大量对象的动画
我正在编写一些代码来设置对象的动画。。目前我有这样的东西(伪代码) 如您所见,对于创建的每个精灵,它都有其动画功能,可以更改其x和y位置,并且fps计算很简单。我想要实现的是这样的目标:Graphics 在一次调用中设置大量对象的动画,graphics,2d,Graphics,2d,我正在编写一些代码来设置对象的动画。。目前我有这样的东西(伪代码) 如您所见,对于创建的每个精灵,它都有其动画功能,可以更改其x和y位置,并且fps计算很简单。我想要实现的是这样的目标: instances = [] fps = 30 def animate(): for each object in instances: # NEED AN 'IF TIME TO ANIMATE?' PART HERE. object.x = blah
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,则(当前)唯一可行的方法是将属性添加到
精灵类中,以保存上次设置动画的时间。然后,您可以很容易地计算是否该更改帧
if CurrentTime - mario.lastAnimTime > rate then
mario.lastAnimTime = CurrentTime
// Change frame...
谢谢这是难以置信的简单,是我以前一直在想的事情。出于某种原因,我最终试图计算经过了多少帧,然后根据这些帧而不是经过的时间来计算出来。以不同的速率制作动画有点不寻常,可能在视觉上不太吸引人。奥托,这种做法有什么具体原因吗?
if CurrentTime - mario.lastAnimTime > rate then
mario.lastAnimTime = CurrentTime
// Change frame...