如何在pygame中移动一类对象?

时间:2014-05-04 05:03:03

标签: python class pygame move

我有一类pygame.draw.rect,如下所示:

pygame.draw.rect(windowSurface, BROWN, (x+25,  y+35,   5,   5))

这些都在Archer()函数的draw(x, y)类下。但是,我想将所有这些对象作为一个对象移动。如何在不移动每个对象的情况下移动此类中的所有对象?我的代码在这里:http://pastebin.com/APkgTnTk

1 个答案:

答案 0 :(得分:0)

将这些对象包含在RenderUpdates组中。这使您可以将屏幕上的项目绘制为一个,并将它们上的功能调用为一个。例如,你可以这样做:

window_surfaces = pygame.sprite.RenderUpdates()

然后包含在要在组中调用的类的 init 函数内:

window_surfaces.add(self)

然后,当你想要调用所有这些函数时,你可以调用

window_surfaces.draw()

您可以考虑在" self"中包含每个类的各个参数。预先。

此外,如果您只想在当前位置绘制一组精灵,您可以致电:

pygame.display.update(window_surfaces.draw(screen))

但请注意,此绘制函数不是您定义的函数,而是内置于渲染更新对象的函数。如果您使用渲染更新,您可能不想覆盖此功能。

另外,事实上,您似乎可能没有使用精灵。如果是这种情况(并且您可能需要认真考虑使用它们,它们具有许多有用的功能,您必须从头开始构建它们),而不是希望将类附加到 init 函数,然后使用for循环来调用函数:

for itemtodraw in mygroup:
    itemtodraw.draw()