簡體   English   中英

當您移動/拖動窗口時,為什么pygame在pygame.event.get()處凍結?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM