我正在尝试在 pygame 中在 LayeredDirty 精灵组中的精灵的静态背景上方绘制一个框。
if e.type == MOUSEMOTION:
if 1 in e.buttons:
# redraw the old box's background
self.layered_group.repaint_rect(self._draw_box)
# update the box size
self._draw_box.width += e.rel[0]
self._draw_box.height += e.rel[1]
pygame.draw.rect(self.surface, RED, self._draw_box)
这给了我一个错误:
File "/usr/lib/python2.7/dist-packages/pygame/sprite.py", line 1036, in repaint_rect
self.lostsprites.append(screen_rect.clip(self._clip))
TypeError: Argument must be rect style object
如果我在没有 的情况下执行此操作repaint_rect
,它会正确绘制框,但不会更新背景。
如果我添加self.layered_group.set_clip(self._draw_box)
,则错误消失,但没有绘制任何内容:
if e.type == MOUSEMOTION:
if 1 in e.buttons:
# redraw the old box's background
self.layered_group.set_clip(self._draw_box)
self.layered_group.repaint_rect(self._draw_box)
self.layered_group.set_clip()
# update the box size
self._draw_box.width += e.rel[0]
self._draw_box.height += e.rel[1]
pygame.draw.rect(self.surface, RED, self._draw_box)
我不知道如何使用set_clip
and repaint_rect
,任何帮助将不胜感激。