《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的值为当前时间值。如此循环下去,完成帧图片的连续显示。

相关推荐
云-缩影39 分钟前
文生图技术落地:从广告到游戏,哪些场景真的能用
人工智能·游戏
武天旭7 小时前
AI安全--AI大模型的毒性偏见与安全对齐实践
人工智能·python·深度学习
视觉小萌新8 小时前
AI Class 3 · Chapter 2-3:函数、异常、文件读写+JSON / JSONL 读写(小白版)
人工智能·python·json
小小张说故事9 小时前
Python 的 obj.x 到底按什么顺序找?拆开数据描述符、实例字典和 __getattr__ 那条优先级链
python
用户114818678948410 小时前
水印的实现方式逻辑
前端·python
贾公子10 小时前
从单条内容到账号维度——AIGC 风险评分的工程实现
后端·python
hkNaruto10 小时前
【AI】游戏大模型智能体OODA过程记忆问题解决方案:AgenticSTS 有界记忆契约:技术分析与流水线改造操作手册
人工智能·游戏·机器学习
木头左12 小时前
【Python】不点浏览器发博客:逆向 CSDN 创作中心接口做 md-publish 技能
python·自动化·api
Tt有了t12 小时前
设计模式速查
java·python·设计模式
deepseek2312 小时前
Python日志拖慢请求?QueueHandler排队、丢失与退出实测
python·性能优化·logging·后端开发·queuehandler