我正在用pygame建立一個菜單,並且我想讓它使用特定的遊戲手柄進行導航。理想情況下,我希望能夠反覆按壓和按住D-pad上的按鈕,或者在鍵盤上按住第一個按鈕,然後重複輸入相同的字符(看似),然後再按下。 「M試圖仿效的pygame.key.set_repeat(...)
功能操縱桿。我的做法至今一直pygame.key.set_repeat遊戲杆
pygame.time.set_timer(pygame.USEREVENT, 10)
DELAY_TIME = 0.250 #ms
y_delay = True
while not done:
for event in pygame.event.get():
y_axis = gamepad.get_axis(1)
if y_axis > 0.5: # pushing down
main_menu.move_down()
redraw() #redraw everything on the surface before sleeping
if y_delay:
time.sleep(DELAY_TIME)
y_delay = False #don't delay the next time the y axis is used
elif y_axis < -0.5: #pushing up
# repetitive I know, but I'm still working on it
main_menu.move_up()
redraw()
if y_delay:
time.sleep(DELAY_TIME)
y_delay = False
else:
y_delay = True # delay the next time
我的問題是,如果有人輕敲向上或向下的速度比DELAY_TIME
他們被限制爲DELAY_TIME
,纔可以再次移動。此外如果有人在time.sleep
間隔內釋放並按下向上/向下按鈕,則python永遠不會看到它已被釋放,並且不允許延遲。
也許有辦法做到這一點,使用事件或以某種方式將操縱桿映射到鍵? qjoypad不會爲我剪下它,而joy2keys是垃圾。我需要在python程序中進行映射。