pygame学习笔记(三)事件的处理机制

三、事件的处理机制

1.pygame事件
pygame.event.EventType

  1. 本质上是一种分装后的数据类型(对象)
  2. 是Pygame的一个类,表示事件类型
  3. 事件类型 只有属性,
  4. 没有方法 用户可以自定义新的事件类型

事件类型:
pygame学习笔记(三)事件的处理机制_第1张图片

2.python事件队列
python事件队列同时仅能存储128个事件,当队列满时,更多事件将被丢弃。
设置事件队列能够缓存事件的类型。
pygame.event.set_blocked()
控制哪些类型事件不允许被保存到事件队列
pygame.event.get_blocked()
测试某个事件类型是否被事件队列禁止
事件被禁止,返回True,否则返回False
pygame.event.set_allowed()
控制哪些事件类型 允许被保存到事件队列

3.常用的事件处理函数
①处理事件:
pygame.event.get()
从事件队列中获得事件列表(获得队列所有 事件)

for event in pygame.event.get():  #当事件队列中为退出事件,退出
		if event.type==pygame.QUIT:
			sys.exit()

增加参数,获得某类或某些类事件:
pygame.event.get(type)
pygame.event.get(typelist)

pygame.event.poll()
从事件队列获得一个事件

while True:
	event=pygame.ebent.poll()

事件获取后,从队列中删除。
若事件为空,则返回event.NOEVENT

pygame.event.clear()
从事件队列 删除事件,默认删除所有事件
与pygame.event.get()类似,可以增加参数,从而删除某类或某些类事件:
pygame.event.clear(type)
pygame.event.cleartypelist)

②生成事件
pygame.event.post(event)
产生一个事件,并将其放入事件队列
一般用于防止用户自定义事件
也可用于放置系统定义事件(如键盘,鼠标)

pygame.event.event(type,dict)
创建一个给定类型的事件
事件的属性和值采用字典类型复制,属性名采用字符串形式。

4.鼠标事件及其类型
①鼠标移动事件
pygame.event.MOUSEMOTION
event.pos
鼠标当前坐标值(x,y),相对于窗口左上角
event.rel
鼠标相对于上次事件的运动距离(X,Y)
event.buttons
鼠标按键状态(a,b,c),鼠标键按下,对应值为1,否则为0
②鼠标键释放事件
pygame.event.MOUSEBUTTONUP
event.pos
鼠标当前坐标值(x,y),相对于窗口左上角
event.button
鼠标按下键编号,左键为1,右键为3,与设备相关
③鼠标按下事件
pygame.event.MOUSEBUTTONUP
event.pos
鼠标当前坐标值(x,y),相对于窗口左上角
event.button
鼠标按下键编号,左键为1,右键为3,与设备相关

5.键盘事件及其类型
键盘按下事件pygame.event.KEYDOWN
键盘释放事件pygame.event.KEYUP

event.unicode 按键的unicode码,
event.key 按键的常量名称
event.mod 按键修饰符的组合值

按键的名称及修饰符这里就不贴了

可用event.mod来进行修饰符的按位或运算

event.mod = KMOD_SHIFT | KMOD_ALT

附学习链接:http://www.icourse163.org/course/BIT-1001873001

你可能感兴趣的:(python,pygame)