问题描述
我有以下工作程序。单击时,图像在该位置绘制但立即消失,因为它仅在鼠标按下事件时绘制。我希望图像在鼠标按下事件结束后永久保留在屏幕上。
import pygame
BLUE = (0,255)
BLACK = (255,255,255)
pygame.init()
screen = pygame.display.set_mode((800,600))
clock = pygame.time.Clock()
all_sprites = pygame.sprite.Group()
player_image = pygame.image.load('Player.png').convert()
start_rect = player_image.get_rect()
image_rect = start_rect
running = True
while running:
# keep running at right fps
clock.tick(30)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.MOUSEBUTTONDOWN:
print("Item created at (%d,%d)" % event.pos)
screen.blit(player_image,(event.pos[0],event.pos[1]))
all_sprites.update()
screen.fill(BLUE)
all_sprites.draw(screen)
# nachdem alles gezeichnet ist flip display
pygame.display.flip()
pygame.quit()
我可以将事件块放在 screen.fill(BLUE) 下方,然后图像会停留几毫秒,但两个选项都不会永久显示播放器图像。
感谢您的帮助。
解决方法
您必须将位置存储到变量 (player_position
) 中。设置变量时在主应用程序循环中绘制图像:
player_position = None
running = True
while running:
# keep running at right fps
clock.tick(30)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.MOUSEBUTTONDOWN:
print("Item created at (%d,%d)" % event.pos)
player_position = event.pos
all_sprites.update()
screen.fill(BLUE)
all_sprites.draw(screen)
if player_position != None:
screen.blit(player_image,player_position)
# nachdem alles gezeichnet ist flip display
pygame.display.flip()
pygame.quit()