为什么键盘事件因鼠标移动而停止?

时间:2014-05-13 04:22:16

标签: python events keyboard pygame mouse

我在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()

在这个游戏中一切正常,我的对象响应键盘事件,直到鼠标开始移动。当鼠标移动时,无论我敲击键盘多么努力,都没有任何反应。

这是为什么?有没有办法防止这种情况发生?

1 个答案:

答案 0 :(得分:1)

发生的事情是您的鼠标事件完全停止了您的活动。我建议事先使用列表理解来过滤它们:

try:
    events = [event for event in events if event.key >= 273 and event.key <= 276]
except AttributeError:
    continue

这可以确保键是箭头键之一。否则,将其从事件列表中删除。

希望这有帮助!