[英]Why does pygame freeze at pygame.event.get() when you move/drag the window?
基本上我有一個循環(刻度,set_caption,screen_fill,event.get(),send_frame_event,翻轉,重復)
當我在Windows 7上拖動窗口時,循環停止循環,最終陷在pygame.event.get()中,我試圖為get定義某些事件,例如get([pygame.QUIT])無濟於事。 。
拖動/移動窗口時,簡單地調用pygame.event.clear()具有相同的凍結效果。
有解決方法嗎?
不是完整的代碼,但應該足夠了:
def start(self):
self.running = True
Clock = pygame.time.Clock()
while self.running:
self.p += 25
tickFPS = Clock.tick(self.fps)
pygame.display.set_caption("Press Esc to quit. FPS: %.2f" % (Clock.get_fps()))
self.screen.fill([self.p&0xFF,(255-self.p)&0xFF,255])
self.handleEvents()
self.raiseEvent("updateFrame")
pygame.display.flip()
def handleEvents(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
self.running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
self.running = False
完整代碼,請訪問: http : //pastie.org/private/wm5vqq3f7xe0xlffy1fq
嘗試在pygame.event.pump()
循環(或handleEvents函數)內調用pygame.event.pump()
)
不知道這是否有幫助:
我意識到問題出在移動窗口窗口,而不是調整窗口大小。 在移動和調整大小之間可能存在一些相似之處?
我在調整大小的文檔中找到了這一點:
然后設置顯示模式,將幾個事件放置在pygame事件隊列中。 當用戶請求關閉程序時,發送pygame.QUIT。 該窗口將在顯示獲得和失去輸入焦點時接收pygame.ACTIVEEVENT事件。 如果顯示設置為pygame.RESIZABLE標志,則當用戶調整窗口尺寸時,將發送pygame.VIDEORESIZE事件。 當必須重新繪制部分窗口時,直接繪制到屏幕上的硬件顯示將獲得pygame.VIDEOEXPOSE事件。
和:
請注意,當用戶調整游戲窗口的大小時, pygame不會自動更新其內部屏幕表面 。 每次發送VIDEORESIZE時,您必須調用set_mode()。 這確實應該在文檔中更加清楚。
也許在移動游戲窗口時,會發生類似的事情嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.