如何处理 pygame VideoExpose 事件
how to handle pygame VideoExpose event
我正在试验 pygame
并注意到当我按下 alt+tab 并且 window 全屏时它引发了一个 VideoExpose
事件。当我再次按下 alt+tab 切换时,屏幕上的所有内容都会移动到左下角。
我知道这应该意味着 'portions of the window must be redrawn',但我应该如何重新绘制它们以及为什么 pygame
甚至首先有这个事件?
如果您正在编写使用 windowing 事件模型的程序,windowing 环境会发送程序事件以通知它环境变化 - window 调整大小、鼠标搬家,需要re-paint,等等
不处理这些事件将导致您的应用程序被环境视为“无响应”。在 SO 上,PyGame 每周大约有一个问题,正是这个问题。
当使用 PyGame re-drawing 时,事件处理似乎是多余的,因为大多数 PyGame 游戏每帧重绘整个屏幕,例如:60 FPS。但如果不需要,这种方法完全是浪费资源(CPU-time、电力等)它虽然非常简单,但对初学者来说非常好。
假设您正在编写 Solitaire 之类的纸牌游戏...与用户交互时,屏幕 仅 更新。就 CPU 而言,当用户考虑下一步行动时,它有 99.9% 的时间什么都不做。在这种情况下,程序可以只在必要时写入 re-draw 屏幕。 什么时候有必要?当玩家提供输入,或程序从丧偶环境接收到 pygame.VIDEOEXPOSE
事件时。
如果您的程序不断重绘 window,您可以简单地忽略该消息。如果不是,则在接收消息时调用通常用于呈现 window 的任何代码块。公开消息可能会附带需要 re-drawn 的屏幕区域,在这种情况下,真正好的应用程序只会更新显示的那部分。
我正在试验 pygame
并注意到当我按下 alt+tab 并且 window 全屏时它引发了一个 VideoExpose
事件。当我再次按下 alt+tab 切换时,屏幕上的所有内容都会移动到左下角。
我知道这应该意味着 'portions of the window must be redrawn',但我应该如何重新绘制它们以及为什么 pygame
甚至首先有这个事件?
如果您正在编写使用 windowing 事件模型的程序,windowing 环境会发送程序事件以通知它环境变化 - window 调整大小、鼠标搬家,需要re-paint,等等
不处理这些事件将导致您的应用程序被环境视为“无响应”。在 SO 上,PyGame 每周大约有一个问题,正是这个问题。
当使用 PyGame re-drawing 时,事件处理似乎是多余的,因为大多数 PyGame 游戏每帧重绘整个屏幕,例如:60 FPS。但如果不需要,这种方法完全是浪费资源(CPU-time、电力等)它虽然非常简单,但对初学者来说非常好。
假设您正在编写 Solitaire 之类的纸牌游戏...与用户交互时,屏幕 仅 更新。就 CPU 而言,当用户考虑下一步行动时,它有 99.9% 的时间什么都不做。在这种情况下,程序可以只在必要时写入 re-draw 屏幕。 什么时候有必要?当玩家提供输入,或程序从丧偶环境接收到 pygame.VIDEOEXPOSE
事件时。
如果您的程序不断重绘 window,您可以简单地忽略该消息。如果不是,则在接收消息时调用通常用于呈现 window 的任何代码块。公开消息可能会附带需要 re-drawn 的屏幕区域,在这种情况下,真正好的应用程序只会更新显示的那部分。