我在pygame中有一个程序,它接受鼠标输入和键盘输入,如下所示:
for event in events:
if event.key == pygame.K_LEFT:
for k in other:
k.move(archerspeed, 0)
k.draw(k.x, k.y)
for k in arrows:
Arrow().draw(k[0], k[1])
if event.key == pygame.K_RIGHT:
for k in other:
k.move(-archerspeed, 0)
k.draw(k.x, k.y)
for k in arrows:
Arrow().draw(k[0], k[1])
if event.key == pygame.K_UP:
for k in other:
k.move(0, archerspeed)
k.draw(k.x, k.y)
for k in arrows:
Arrow().draw(k[0], k[1])
if event.key == pygame.K_DOWN:
for k in other:
k.move(0, -archerspeed)
k.draw(k.x, k.y)
for k in arrows:
Arrow().draw(k[0], k[1])
if pygame.mouse.get_pressed()[0] == 1 and time.time() - arrowtime > 1:
myarcher.shoot(myarcher.x, myarcher.y)
arrowtime = time.time()
在这个游戏中一切正常,我的对象响应键盘事件,直到鼠标开始移动。当鼠标移动时,无论我敲击键盘多么努力,都没有任何反应。
这是为什么?有没有办法防止这种情况发生?
答案 0 :(得分:1)
发生的事情是您的鼠标事件完全停止了您的活动。我建议事先使用列表理解来过滤它们:
try:
events = [event for event in events if event.key >= 273 and event.key <= 276]
except AttributeError:
continue
这可以确保键是箭头键之一。否则,将其从事件列表中删除。
希望这有帮助!