我對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