我对python完全陌生(而且这已经有一段时间了,因为我编写了很多代码)。 我想调用一个方法,在一个小小的“你好世界”类游戏中充当事件处理程序,但它根本不起作用。我在OSX 10.6.3上使用pygames 1.9.1 lib和python 2.6.1。Python事件处理函数方法不能返回条件值
所以这是一个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书籍(oreilly学习Python)中漏掉了一些东西,或者我已经花了很长时间从正确的编码中突破,但是是的。非常感谢帮助。
是的。 pygame.event.get不会触发,但是如果我在for循环之前粘贴一个打印语句(_does_被触发)(现在想到了这一点).Oh,并且它不会在没有括号的情况下触发,所以那是步骤我的一个错误... for循环似乎根本没有触发。 – ReadyWater 2010-07-04 01:20:46
你确定'pygame.event.get()'没有被触发吗?它可能被触发但没有任何事件。 – 2010-07-04 01:24:16
啊,只是想通了。这是因为我打了两次。 exitCheck似乎清空了事件队列,所以在controlUpdate轮到它时没有什么可检查的。 感谢您的帮助。我只是要将这两种方法合并为一种,我没有意识到它是以这种方式工作的。 – ReadyWater 2010-07-04 01:27:05