在我的python prog中,我有2个表面:
ScreenSurface
:屏幕FootSurface
:另一个表面在ScreenSurface
上闪烁。我在FootSurface
上放了一些矩形,问题是Rect.collidepoint()
给了我与FootSurface
相关联的相对坐标,pygame.mouse.get_pos()
给出了绝对坐标。
例如:
pygame.mouse.get_pos()
- > (177,500)与名为ScreenSurface
Rect.collidepoint()
- >与名为FootSurface
的第二个表面相关,其中矩形是blitted
然后那不行。是否有一种优雅的python方式来做这件事:将鼠标放在FootSurface
的相对位置或Rect
的绝对位置;或者我必须更改我的代码以在Rect
中分割ScreenSurface
。
答案 0 :(得分:2)
您可以使用简单的减法计算任何曲面的相对鼠标位置。
考虑以下示例:
import pygame
pygame.init()
screen = pygame.display.set_mode((400, 400))
rect = pygame.Rect(180, 180, 20, 20)
clock = pygame.time.Clock()
d=1
while True:
for e in pygame.event.get():
if e.type == pygame.QUIT:
raise
screen.fill((0, 0, 0))
pygame.draw.rect(screen, (255, 255, 255), rect)
rect.move_ip(d, 0)
if not screen.get_rect().contains(rect):
d *= -1
pos = pygame.mouse.get_pos()
# print the 'absolute' mouse position (relative to the screen)
print 'absoulte:', pos
# print the mouse position relative to rect
print 'to rect:', pos[0] - rect.x, pos[1] - rect.y
clock.tick(100)
pygame.display.flip()