2013-10-21 73 views
0

pygame我想要使用每個箭頭鍵在每個方向上10%的圖像翻譯圖像。現在我使用的代碼只要按下按鍵就會移動圖像,我想要的是僅僅移動一次,無論按鍵是否仍然按下。Pygame單推事件

if event.type == KEYDOWN: 
    if (event.key == K_RIGHT): 
     DISPLAYSURF.fill((255,255,255)) #Clears the screen 
     translation_x(100) 
     draw(1) 
    if (event.key == K_LEFT): 
     DISPLAYSURF.fill((255,255,255)) #Clears the screen 
     translation_x(-100) 
     draw(2) 
    if (event.key == K_UP): 
     DISPLAYSURF.fill((255,255,255)) #Clears the screen 
     translation_y(100) 
     draw(3) 
    if (event.key == K_DOWN): 
     DISPLAYSURF.fill((255,255,255)) #Clears the screen 
     translation_y(-100) 
     draw(4) 

有沒有除了使用time.sleep

+0

你可以停止,直到你收到相應的按鍵了事件的關鍵的關鍵下來後反應。 – flup

+0

根據[pygame的文檔](http://www.pygame.org/docs/ref/key.html),只有一個keydown事件被接收,直到該鍵被釋放並隨後再次按下。你確定接受連續的keydown事件是你問題的根源嗎? – kevintodisco

+0

ktodisco是對的。什麼是'draw(int)'在做什麼? ---另一種方法是獲取按鍵狀態,該按鍵狀態輪詢按鍵是否被按下。 – ninMonkey

回答

2

您可以使用pygame.key.set_repeat()從仍在向下鍵禁用重複的事件實現這個的一個簡單的方法。

然而,默認情況下應禁用:

啓用鍵盤重複,保留的向下鍵將產生多個pygame.KEYDOWN事件。延遲是第一次重複pygame.KEYDOWN發送之前的毫秒數。之後,另一個pygame.KEYDOWN將每間隔毫秒發送一次。如果沒有參數通過,則重複鍵被禁用。

當pygame的初始化鍵重複無效