[英]Pygame - Trying to Toggle a BOOL when a key is pressed, not while pressed
我試圖使BOOL在按下某個鍵時不切換,因為如果按住該鍵,它會使每幀切換開和關(真和假)。
這是我的小撥動代碼
if key[pygame.K_z] and robsHouse.pressed == False:
robsHouse.pressed = True
elif key[pygame.K_z] and robsHouse.pressed == True:
robsHouse.pressed = False
任何想法都會有所幫助,謝謝。
您需要打開KEYDOWN
和KEYUP
事件。
因此,一旦按下按鈕,此布爾值就會改變,對嗎? 只需使用KEYUP
事件並反轉變量即可:
if event == KEYUP:
if event.key == DESIRED_KEY:
boolVar = not boolVar
您的代碼在按住鍵的同時在每一幀之間切換robsHouse.pressed
的原因是因為在按住鍵的每次循環迭代中都會滿足key[pygame.K_z]
條件,然后次級條件會導致彼此在交替幀上得到滿足。
在不更改檢索關鍵數據的方式的情況下,您可以執行以下操作:
if key[pygame.K_z]:
robsHouse.pressed = True
else:
robsHouse.pressed = False
另一種方法是從pygame的事件模塊中查找KEYUP
和KEYDOWN
事件,而不是從密鑰模塊中獲取密鑰數據。 可以這樣完成:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_z:
robsHouse.pressed = True
elif event.type == pygame.KEYUP:
if event.key == pygame.K_z:
robsHouse.pressed = False
就個人而言,在大多數情況下,我更喜歡第二種方法。 無論如何,您都將需要處理pygame的事件模塊中的事件,否則隊列將滿,並且您的程序將變得無響應(在pygame事件模塊文檔中已提到)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.