北京理工大学-Python游戏开发入门学习笔记09

本文详细介绍了Pygame中事件处理的基本方法,包括如何使用pygame.event.get()和pygame.event.poll()获取事件,如何通过pygame.event.clear()清除事件队列,以及如何使用pygame.event.set_blocked()和pygame.event.set_allowed()控制事件的保存。同时,还讲解了如何生成自定义事件并将其放入事件队列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

处理事件

pygame.event.get()
从事件队列中获得事件列表,即获得所有被队列的事件
增加参数,获得某类或某些类时间
pygame.event.get(type)
pygame.event.get(typelist)

pygame.event.poll()
从事列队列中获得一个事件
while True:
event=pygame.event.poll()
事件获取将从事件队列中删除
如果事件队列为空,则返回event.NOEVENT

pygame.event.clear()
从事件队列中删除事件,默认删除所有事件
该函数与pygame.event.get()类似,区别仅是不对事件进行处理

可以增加参数,指定删除某类或某些类事件
pygame.event.clear(type)
pygame.event.clear(typelist)

#pygame仅能处理128个事件

操作事件队列,设置事件队列能够缓存的类型
pygame.event.set_blocked(type or typelist)
控制哪些类事件不被允许被保存到事件队列中

pygame.event.set_allowed()
控制哪些类事件允许被保存到事件队列中

pygame.event.get_blocked()
测试某个事件类型是否被事件队列所禁止
如果事件被禁止,则返回True,否则返回False

生成事件
pygame.event.post(EVENT)
产生一个事件,并将其放入事件队列
一般用于放置用户自定义事件(pygame.USEREVENT),也可以用于放置系统定义事件(如 鼠标或键盘),给定参数

pygame.event.Event(type,dict)
创建一个给定类型的事件
其中,事件的属性和值采用字典类型复制,属性名采用字符串形式,如果创建已有事件 ,属性需一致

import pygame,sys

pygame.init()
screen=pygame.display.set_mode((600,400))
pygame.display.set_caption("事件")
fps=1
fclock=pygame.time.Clock()
num=1

while True:
    uevent=pygame.event.Event(pygame.KEYDOWN,{"unicode":123,"key":pygame.K_SPACE,"mod":pygame.KMOD_ALT})
    pygame.event.post(uevent)
    num=num+1
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            sys.exit()
        elif event.type==pygame.KEYDOWN:
            if event.unicode=="":
                print("[KEYDOWN {}]".format(num),"#",event.key,event.mod)
            else:
                print("[KEYDOWN {}]".format(num), event.unicode, event.key, event.mod)
        pygame.display.update()
        fclock.tick(fps)

ps:学习链接 https://www.icourse163.org/course/BIT-1001873001

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值