在 Pygame 1.9.4 中使用 move_ip

Using move_ip in Pygame 1.9.4

我正在尝试将我在最右上角创建的矩形向下和向左移动。我已经注释掉导致错误的行,即:

invalid destination position for blit

# render box to display level
displayfont = pygame.font.SysFont(None, 30)
text = displayfont.render('level', True, (red), (white))
textrect = text.get_rect()
textrect.topright = screen.get_rect().topright
# textrect = textrect.move_ip(-50, -50) #keeps getting invalid destination for blit
screen.blit(text, textrect)

有什么建议吗?提前致谢!

方法 pygame.Rect.move_ip doesn't return any value. It modifies the pygame.Rect 对象本身。

所以在

之后
textrect = textrect.move_ip(-50, -50)

textrect 的值为 None

另外注意,Surface的右上坐标是(widht, 0)。如果你想移动到表面的中心,那么你必须在负x方向移动,但在正y方向而不是负y方向。

要解决您的问题,必须:

displayfont = pygame.font.SysFont(None, 30)
text = displayfont.render('level', True, (red), (white))
textrect = text.get_rect()
textrect.topright = screen.get_rect().topright

textrect.move_ip(-50, 50)  

screen.blit(text, textrect)