当窗口变大或变小时,我想缩放精灵,我不确定在游戏循环中要注意哪个事件。
根据 pygame docs:
VIDEORESIZE
:
描述:当用户调整窗口尺寸时发送。
属性:、size
和w
给出新尺寸。h
文档将其称为“遗留”事件并建议使用 WINDOWEVENT。
WINDOWRESIZED
:
描述:窗口大小已调整。 属性:
、x
和y
。window
WINDOWSIZECHANGED
:
描述:窗口改变了大小。 属性:
、x
和y
。window
使用其中一种比另一种有什么优势吗?他们之间有什么核心区别吗?
我做了一个最小的示例来查看调整窗口大小时发送的事件。
import pygame
pygame.init()
window = pygame.display.set_mode((1200, 900),pygame.RESIZABLE)
pygame.display.set_caption("Minimal Example")
clock=pygame.time.Clock()
running = True
while running:
clock.tick(2) #small fps so not too many events flood in
for event in pygame.event.get():
if event.type==pygame.QUIT: running=False
print(event) #output events that are sent
pygame.display.update()
pygame.quit()
以下是一些输出的示例:
<Event(32778-WindowResized {'x': 994, 'y': 661, 'window': None})>
<Event(32779-WindowSizeChanged {'x': 994, 'y': 661, 'window': None})>
<Event(32769-VideoResize {'size': (994, 661), 'w': 994, 'h': 661})>
<Event(32778-WindowResized {'x': 994, 'y': 661, 'window': None})>
所有事件类型都给出相同的宽度和高度值。 “window”属性似乎没有任何值。
如果我用鼠标调整大小,
WindowResized
会出现两次。
如果我用键盘调整大小(例如 ⊞
+ →
用于半屏),所有事件类型仍会发送,并且 WindowResized
仅在最后出现一次。
我在网上找到的调整大小的教程仍然倾向于使用
VIDEORESIZE
,并且我无法找到有关这些事件类型之间的差异的文章、讨论线程或文档。
有谁知道这些的内部代码,以及使用其中一个或另一个是否有任何区别?