TableOfContents

事件系统

Pygame通过一个事件系统与用户进行交互,以及处理一些系统发生的事件。事件系统包括一个事件队列,其中每一项都是一个Event对象。所有的用户输入和一些系统事件,都会形成一个Event对象被添加到事件队列中。pygame.event模块提供了很多函数去访问和控制这个队列。

Event对象有各种不同的类型,比如KEYDOWN(键盘键按下)、MOUSEBUTTONDOWN(鼠标键按下)等,通过Event.type属性来区分。不同的类型的Event对象还有不同的其它属性。常用的类型和对应的属性有:

          QUIT             none
          ACTIVEEVENT      gain, state
          KEYDOWN          unicode, key, mod
          KEYUP            key, mod
          MOUSEMOTION      pos, rel, buttons
          MOUSEBUTTONUP    pos, button
          MOUSEBUTTONDOWN  pos, button
          JOYAXISMOTION    joy, axis, value
          JOYBALLMOTION    joy, ball, rel
          JOYHATMOTION     joy, hat, value
          JOYBUTTONUP      joy, button
          JOYBUTTONDOWN    joy, button
          VIDEORESIZE      size, w, h
          VIDEOEXPOSE      none
          USEREVENT        code

要取得事件队列中的事件,pygame提供了一组函数。pygame.event.get函数可以从队列获取所有的消息,并把它们从队列中删除。比如:

   1 for e in pygame.event.get():
   2     if e.type == QUIT:
   3         sys.exit()
   4     else if e.type == KEYDOWN:
   5         pass  #your process here
   6     else if e.type == MOUSEBUTTONDOWN:
   7         pass #your process here

如果队列中没有事件,则pygame.event.get函数返回一个空的列表。

除此以外,还可以用pygame.event.poll()提取并删除一个事件,如果队列是空的,这个函数会马上返回一个pygame.NOEVENT。pygame.event.wait()提取一个事件,如果没有事件则会等待直到有事件发生。pygame.event.peek(type)函数可以检查列表中是否有某种类型的事件,如果有就返回True。pygame.event.clear()可以清空整个队列。

pygame.event.post函数可以往队列中添加一个事件。

键盘

鼠标

定时

摇杆

The End

ch3n2k.com | Copyright (c) 2004-2020 czk.