首页 文章

Python事件处理程序方法不在条件中返回值

提问于
浏览
0

我对python完全不熟悉(自从我编写了很多内容以来已经有一段时间了) . 我试图在一个小“hello world”类型的游戏中调用一个充当事件处理程序的方法,但它根本不起作用 . 我在OSX 10.6.3上使用pygames 1.9.1 lib和python 2.6.1 .

所以这是一个while循环:

self.exitCheck()    

       if self.controlUpdate == True:
           self.playerX += 1

这两种方法是:

def exitCheck(self):
    for event in pygame.event.get():
        if event.type == KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                print "Escape pressed"
                pygame.quit()
                exit()


def controlUpdate(self):
    for event in pygame.event.get():
        if event.type == KEYDOWN:
            if event.key == pygame.K_SPACE:
                print "Spacebar pressed"
                return True
        elif event.type == KEYUP:
            if event.key == pygame.K_SPACE:
                print "Spacebar not pressed"
                return False
        else:
            return False

exitCheck始终是,但在条件中似乎永远不会调用controlUpdate . 我觉得我要么错过了我经历过的蟒蛇书中的一些东西(可能是学习Python),或者我从正确的编码中抽出了太长时间,但是是的 . 非常感谢帮助 .

2 回答

  • 1

    编辑:问题是 pygame.event.get() 都返回并从事件队列中删除所有事件 . 这意味着每次调用 controlUpdate() 时,事件队列都将为空,并且 for 循环内的任何内容都不会被执行 .

  • 3

    你不是错过了一些括号吗?

    if self.controlUpdate() == True:

相关问题