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

相关推荐
孟健11 小时前
Karpathy 用 200 行纯 Python 从零实现 GPT:代码逐行解析
python
码路飞13 小时前
写了个 AI 聊天页面,被 5 种流式格式折腾了一整天 😭
javascript·python
曲幽15 小时前
FastAPI压力测试实战:Locust模拟真实用户并发及优化建议
python·fastapi·web·locust·asyncio·test·uvicorn·workers
敏编程20 小时前
一天一个Python库:jsonschema - JSON 数据验证利器
python
前端付豪20 小时前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain
databook20 小时前
ManimCE v0.20.1 发布:LaTeX 渲染修复与动画稳定性提升
python·动效
xiezhr1 天前
米哈游36岁程序员被曝复工当晚猝死出租屋内
游戏·程序员·游戏开发
花酒锄作田1 天前
使用 pkgutil 实现动态插件系统
python
前端付豪2 天前
LangChain链 写一篇完美推文?用SequencialChain链接不同的组件
人工智能·python·langchain
曲幽2 天前
FastAPI实战:打造本地文生图接口,ollama+diffusers让AI绘画更听话
python·fastapi·web·cors·diffusers·lcm·ollama·dreamshaper8·txt2img