《pygame中Sprite类实现多帧动画》注-通过多张序列帧显示动画2-1

多张序列帧指的是每一帧是一张单独的图片,如图1所示。

图1 多张序列帧

连续显示这些序列帧,就可以实现动画效果,如图2所示。

图2 动画效果

1 构造多帧图片的文件名列表

通过多张帧序列显示动画,就需要将这些帧序列图片都导入到程序中。因此,需要将这些图片名放到列表中,以便使用。从图1中可以看出,每张序列帧的名字都是以"BucketheadZombie_数字.png"的格式命名的,因此,可以通过图3所示的代码将图片名放入到列表中。

图3 将图片名放入到列表中的代码

以上代码通过列表推导式,将图片名放入到列表中,这些帧图片都保存在"BucketheadZombie"文件夹中。imagepath_list中的元素如图4所示。

图4 imagepath_list中的元素

相关链接1 列表推导式的相关知识,请参考《Python中List推导式的使用方法》

2 修改MySprite类的__init__()方法

显示动画效果,实际上就是实现序列帧的切换显示。通过MySprite类的时间属性控制序列帧的切换,代码如图5所示。

图5 init()函数的代码

其中,第26-28行代码与《《pygame中Sprite类实现多帧动画》注-显示静态图片2-1》中相同;第29-30行定义的current_time和last_time表示当前时间和显示当前帧的时间,第31行定义的current_frame表示显示的当前帧图片,如图6所示。

图6 时间属性示意图

从图6的左边向右边看,当current_time-last_time的值超过某个阈值speed时,说明当前帧图片current_frame已经显示了足够长的时间,该换下一张帧图片了,此时current_frame加1,表示显示下一张帧图片,然后last_time的值变为current_frame,重新获取current_frame的值为当前时间值。如此循环下去,完成帧图片的连续显示。

相关推荐
U盘失踪了6 小时前
python curl转python脚本
开发语言·chrome·python
FQNmxDG4S6 小时前
Java泛型编程:类型擦除与泛型方法的应用场景
java·开发语言·python
bzmK1DTbd7 小时前
JDBC编程规范:PreparedStatement与事务管理
数据库·python·eclipse
我星期八休息7 小时前
IT疑难杂症诊疗室:AI时代工程师Superpowers进化论
linux·开发语言·数据结构·人工智能·python·散列表
代码小书生7 小时前
math,一个基础的 Python 库!
人工智能·python·算法
leo825...7 小时前
Claude Code Skills 清单(本地)
java·python·ai编程
其实防守也摸鱼7 小时前
CTF密码学综合教学指南--第三章
开发语言·网络·python·安全·网络安全·密码学
A7bert7777 小时前
【YOLOv8pose部署至RDK X5】模型训练→转换bin→Sunrise 5部署
c++·python·深度学习·yolo·目标检测
gqk019 小时前
【无标题】
python
V搜xhliang02469 小时前
OpenClaw科研全场景用法:从文献到实验室的完整自动化方案
运维·开发语言·人工智能·python·算法·microsoft·自动化