0

我正在尝试在 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_clipand repaint_rect,任何帮助将不胜感激。

4

0 回答 0