我有一类pygame.draw.rect
,如下所示:
pygame.draw.rect(windowSurface, BROWN, (x+25, y+35, 5, 5))
这些都在Archer()
函数的draw(x, y)
类下。但是,我想将所有这些对象作为一个对象移动。如何在不移动每个对象的情况下移动此类中的所有对象?我的代码在这里:http://pastebin.com/APkgTnTk
答案 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()