下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第利用Pygame制作简单动画的示例详解目录前言计时器绘制精灵加载精灵完整代码
前言
实现一个帧动画,使用的一个图,根据不同的时间显示不同的图。
使用的就是如下所示的一张图,宽度780*300,使用加载图片260*150来实现。
pygame.init()
screen=pygame.display.set_mode((400,300),0,32)
pygame.display.set_caption("动画")
whileTrue:
foreventinpygame.event.get():
ifevent.type==pygame.QUIT:
sys.exit()
key=pygame.key.get_pressed()
ifkey[pygame.K_ESCAPE]:
sys.exit()
screen.fill((154,205,255))
pygame.display.update()
首先实现最简单的图形
计时器
首先根据时间的不同,去改变当前的图像。
使用pygame.time.Clock()实现时间定时。get_ticks()获取一个不断增减的时间。
framerate=pygame.time.Clock()
frametate.tick(30)
ticks=pygame.time.get_ticks()
pygame.init()
screen=pygame.display.set_mode((400,300),0,32)
pygame.display.set_caption("动画")
framerate=pygame.time.Clock()
whileTrue:
framerate.tick(30)
ticks=pygame.time.get_ticks()
print(ticks)
foreventinpygame.event.get():
ifevent.type==pygame.QUIT:
sys.exit()
key=pygame.key.get_pressed()
ifkey[pygame.K_ESCAPE]:
sys.exit()
screen.fill((154,205,255))
pygame.display.update()
758
791
824
858
891
924
958
992
1025
1058
输出如上所示,30帧每秒,所以时间每次增加大约34-33之间,如上所示我们获取到了一个随时间改变的量。
绘制精灵
这里使用精灵绘制图,为了方便操作。
classMySprite(pygame.sprite.Sprite):
def__init__(self,target):
pygame.sprite.Sprite.__init__(self)
self.master_image=None#存储图片的
self.frame=0#初始图片位置
self.old_frame=-1#上一个图片位置
self.frame_width=1
self.frame_height=1#保存每一帧的图片大小
self.first_frame=0
self.last_frame=0#位置取值的区间
self.columns=1#帧数的最大值
self.last_time=0#保存之间的时间
defload(self,filename,width,height,columns):
self.master_image=pygame.image.load(filename).convert_alpha()#载入图片
self.frame_width=width#260
self.frame_height=height#150
self.rect=0,0,width,height
self.columns=columns#列宽的数量是3
#trytoauto-calculatetotalframes
rect=self.master_image.get_rect()#获取到对应的图片的大小780*300
self.last_frame=(rect.width//width)*(rect.height//height)-1#5
defupdate(self,current_time,rate=30):#current_time更新频率为30
#updateanimationframenumber
ifcurrent_timeself.last_time+rate:#如果当前事件大于最后的时间+当前的节奏
self.frame+=1#当前的帧数加一
ifself.frameself.last_frame:#当前最后一帧则从第一帧开始
self.frame=self.first_frame#从0开始
self.last_time=current_time#将最后帧值为30
#buildcurrentframeonlyifitchanged
ifself.frame!=self.old_frame:#当前帧数不等于老的一阵
frame_x=(self.frame%self.columns)*self.frame_width
frame_y=(self.frame//self.columns)*self.frame_height
rect=(frame_x,frame_y,self.frame_width,self.frame_height)#更新对应的位置
self.image=self.master_image.subsurface(rect)#循环箱已有的方向
self.old_frame=self.frame
加载精灵
pygame.sprite.Group()创建精灵组,之后使用对应的updatedraw绘制对应的精灵
#createthesprite
dragon=MySprite(screen)
dragon.load("
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 热力管网工程档案管理规范
- 实验室工程监理实施细则
- 旅居康养服务项目投资估算报告
- 流域畜禽养殖污染治理实施方案
- 认知症照护中心建设与运营方案
- 社区公共卫生服务设施配置方案
- 小学课间活动优化实施方案
- 施工用电巡检培训
- 孕产妇围产期健康管理工作手册
- 有毒液体储罐风险评估报告
- 国家保安员资格考试培训教材
- 全国行业职业技能竞赛-全国乡村建设工匠(水电安装工)技能竞赛理论题库(附答案)
- 浴池办卫生许可管理制度
- 教育培训机构预付费制度
- 2025年中职电气技术应用(直流电路分析)试题及答案
- 北京市朝阳区2025-2026学年高三上学期期中质量检测数学试卷(解析版)
- 营地营运方案
- 仓库6S管理制度仓库现场6S执行标准仓库6S检查表
- 高校教研室年度工作总结范文
- 牧业财务管理办法
- T/JSSES 39-2024水体中抗生素环境风险评估技术指南
评论
0/150
提交评论