我正在 pygame 中开发一个基于网格的游戏,并且希望窗口可以调整大小。我使用以下初始化代码来完成此操作:
pygame.display.set_mode((740, 440), pygame.RESIZABLE)
以及我的事件处理程序中的以下内容:
elif event.type == pygame.VIDEORESIZE:
game.screen = pygame.display.set_mode((event.w, event.h),
pygame.RESIZABLE)
# Code to re-size other important surfaces
我遇到的问题是,似乎 pygame.VIDEORESIZE 事件只有在用户完成调整窗口大小(即放开边框)后才会推送。screen.get_size() 更新类似。由于我的游戏的图形非常简单,我真的更喜欢它们在用户拖动窗口时调整大小。这在许多其他语言中都是微不足道的,但我在 pygame 中找不到任何参考 - 尽管我无法想象这种基本功能是不可能的。
当 pygame 中屏幕大小调整时,如何更新我的游戏?
编辑:这是一个最小的工作示例。在 Windows 10、pygame 1.9.4 上运行,以下代码只会在用户完成拖动窗口后绘制更新的矩形。
import sys
import pygame
pygame.init()
size = 320, 240
black = 0, 0, 0
red = 255, 0, 0
screen = pygame.display.set_mode(size, pygame.RESIZABLE)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.VIDEORESIZE:
pygame.display.set_mode((event.w, event.h), pygame.RESIZABLE)
screen.fill(black)
pygame.draw.rect(screen, red, (10,10,screen.get_width(),screen.get_height()))
pygame.display.flip()
FFIVE
森林海
相关分类