第一范文网 - 专业文章范例文档资料分享平台

2014年度辛星pygame教程第二节

来源:用户分享 时间:2025/5/25 1:22:40 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

第二节:Pygame中的事件及其处理

说明:百度搜索“辛星 pygame”可以找到更多更全的pygame资料。 日期:2014/3/31

pygame.event通过一个事件队列来处理所有的事件消息,这个模块里很多函数可以帮助我们来管理该事件队列。该事件队列很大程度上和display模块有关,如果display没有初始化或者视频模式没有设置,则事件队列无法工作。 队列是一个Event对象的普通队列,我们有很多访问队列中的事件的方法。一个Event对象包含一个事件类型以及一组只读的数据成员。Event对象没有成员函数,只有数据。我们还可以通过继承pygame.event.Event创建自己的事件。 我们可以在Event对象的Event.type中保存事件的类型标志,我们也可以从Event.dict方法访问所有的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.pump(),它没有返回值,官方给出的解释是我们必须在我们游戏的每一帧都调用我们的一次事件队列,这样可以保证我们的操作系统可以与其他进程进行交互,如果我们没有自己的调用事件的函数,我们需要使用这个函数来调用默认的事件处理。如果我们的应用程序长时间不能响应事件,则系统可能判断我们的应用程序已经锁死了。

第二个函数是pygame.event.get(),它有三种调用方式,第一种是无参数,第二种传递参数type,第三种传递参数typelist,返回类型为Eventlist。官方给出的解释我们可以取出事件,并且把该事件从队列中清除。值得注意的是如果我们只取出感兴趣的事件,则可能我们的事件队列可能 会被我们不感兴趣的事件给充满,因此我们要定期清空队列。

第三个函数是pygame.event.poll(),它是取得一个事件的实例,且取得的事件会从事件队列中删除,它的返回类型为EventType的一个实例,如果队列为空,则返回 一个NOEVENT。 第四个函数是pygame.event.wait(),它的目的是等待获取一个事件,返回类型也是一个EventType的实例。 第五个 函数是pygame.event.peek(),它的返回类型为布尔类型,它是为了测试事件队列中是否有特定的事件类型。它有两种调用方式,第一种参数为type,第二种为typelist。

第六个函数是pygame.event.clear(),它可以没有参数,也可以指定参数为type,还可以接受typelist,它无返回值,它的目的就是清空事件队列。 第七个函数是pygame.event.event_name(),它接受一个参数type,然后返回类型是string,因为pygame使用整数来表示事件类型,为了得到我们能看懂的字符串,可以使用该函数。

第八个函数是pygame.event.set_blocked(),它的参数可以没有,也可以是type,还可以是typelist,它的目的是设置我们可以不接受的事件类型,即我们的事件队列可以接受的事件类型。默认所有的事件都会接收。

第九个函数是pygame.event.set_allowed(),它的参数可以没有,可以为type,还可以是typelist,它的目的是设置我们接受的事件类型。

第十个函数是pygame.event.get_blocked(),它的返回类型为布尔类型,接受参数为type,即测试一个事件类型是否被拒绝接受。 第十一个函数是pygame.event.set_grab(),它接受一个布尔类型的参数,无返回值,它是我们是否抢占鼠标键盘等输入设备,我们不建议总是抢占输入设备,这对其他应用程序可能会带来不可预料的后果。

第十二个函数是pygame.event.post(),它接受一个Event,无返回值,它会放置一个新的实践到我们的事件队列中,这个事件可以被其他的事件函数获取。我们通常使用它来放入我们自己的事件类型,也可以使用系统事件类型,但是我们需要确保我们设置的属性都是正确的。

搜索更多关于: 2014年度辛星pygame教程第二节 的文档
2014年度辛星pygame教程第二节.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c8wd3y8zpki1wxgu8k8be9y6ym8c7hv00mu3_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top