什么是PyGame逐帧动画
发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,本篇内容主要讲解"什么是PyGame逐帧动画",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"什么是PyGame逐帧动画"吧!什么是逐帧动画?逐帧动画,是一种
千家信息网最后更新 2025年11月11日什么是PyGame逐帧动画
本篇内容主要讲解"什么是PyGame逐帧动画",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"什么是PyGame逐帧动画"吧!
什么是逐帧动画?
逐帧动画,是一种动画技术,其原理即将每帧不同的图像连续播放,从而产生动画效果。
承接上一节的代码
我们基于上一节的代码来实现一个圆形来回运动的动画效果。上一节的代码如下
import pygamepygame.init()screen = pygame.display.set_mode((640, 480)) # 设置窗口的大小# 创建一个surface,名字叫background,大小和screen一样background = pygame.Surface(screen.get_size())# 用白色填充background;255,255,255是RGB的白色background.fill((255, 255, 255))mySurface = pygame.Surface((200, 200)) # 200 x 200 大小的surfacemySurface.set_colorkey((0, 0, 0))pygame.draw.circle(mySurface, (0, 0, 255), (100, 100), 100)background = background.convert()screen.blit(background, (0, 0))mySurface = mySurface.convert_alpha()screen.blit(mySurface, (200, 200))clock = pygame.time.Clock() # 创建clock对象FPS = 30 # 定义帧率的上限,就是帧率的最大值mainloop = Truewhile mainloop: clock.tick(FPS) # 设置最大帧率 for event in pygame.event.get(): # 这一部分就是事件处理 if event.type == pygame.QUIT: # 如果按下右上角的叉叉 mainloop = False # 退出主循环 elif event.type == pygame.KEYDOWN: # 如果按下了键盘 if event.key == pygame.K_ESCAPE: # 而且按下的还是ESC键 mainloop = False # 退出主循环 # 在这里做一些游戏相关的运算,这里暂时省略 text = "FPS: {0:.2f}".format(clock.get_fps()) pygame.display.set_caption(text) pygame.display.flip() # 刷新显示pygame.quit()实现原理和代码
我们将要在主循环中不断修改surface的坐标,从而实现移动的效果。还记得blit一个surface时,有个参数就是坐标吗?
screen.blit(mySurface, (200, 200))
这里的(200, 200)就是坐标。
在第一次blit我们的mySurface时,我们将它的坐标设置为(0, 0),这样它会显示在左上角。
我们定义了mySurfaceX、mySurfaceY来保存当前mySurface的坐标;定义了dx、dy来表示每次循环中mySurfaceX、mySurfaceY的增量。
在主循环中,修改mySurfaceX、mySurfaceY,然后mySurface被blit到(mySurfaceX, mySurfaceY)。
import pygamepygame.init()screen = pygame.display.set_mode((640, 480)) # 设置窗口的大小# 创建一个surface,名字叫background,大小和screen一样background = pygame.Surface(screen.get_size())# 用白色填充background;255,255,255是RGB的白色background.fill((255, 255, 255))mySurface = pygame.Surface((200, 200)) # 200 x 200 大小的surfacemySurface.set_colorkey((0, 0, 0))pygame.draw.circle(mySurface, (0, 0, 255), (100, 100), 100)background = background.convert()screen.blit(background, (0, 0))mySurface = mySurface.convert_alpha()####################################################################screen.blit(mySurface, (0, 0))mySurfaceX = 0mySurfaceY = 0dx = 10dy = 0####################################################################clock = pygame.time.Clock() # 创建clock对象FPS = 30 # 定义帧率的上限,就是帧率的最大值mainloop = Truewhile mainloop: clock.tick(FPS) # 设置最大帧率 for event in pygame.event.get(): # 这一部分就是事件处理 if event.type == pygame.QUIT: # 如果按下右上角的叉叉 mainloop = False # 退出主循环 elif event.type == pygame.KEYDOWN: # 如果按下了键盘 if event.key == pygame.K_ESCAPE: # 而且按下的还是ESC键 mainloop = False # 退出主循环#################################################################### mySurfaceX += dx mySurfaceY += dy if mySurfaceX + mySurface.get_rect().width > screen.get_rect().width: dx *= -1 elif mySurfaceX < 0: dx *= -1 else: pass screen.blit(background, (0, 0)) # !!!!!!!!!!!!!!!!!!!!!!! screen.blit(mySurface, (round(mySurfaceX, 0), round(mySurfaceY, 0)))#################################################################### text = "FPS: {0:.2f}".format(clock.get_fps()) pygame.display.set_caption(text) pygame.display.flip() # 刷新显示pygame.quit()运行这一段代码,你将看到一个往复运动的圆形。请特别注意下面这一行代码
screen.blit(background, (0, 0)) # !!!!!!!!!!!!!!!!!!!!!!!
如果你注释掉这一行代码,你将得到一个长条。这行代码的作用相当于"擦除",它覆盖掉了前面画的东西。
到此,相信大家对"什么是PyGame逐帧动画"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
动画
代码
循环
大小
就是
坐标
最大
白色
效果
上一
一行
上限
事件
内容
原理
名字
圆形
对象
最大值
还是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库主键的语法
地下城堡3数据库
英雄联盟进哪个服务器好一些
大学毕业做网络安全
怎样投诉软件开发商
分布式数据库安全架构
南充网络技术价格多少
db数据库软件
河北软件开发单招
基础软件开发是指什么
近三年网络安全事件点评
武汉大学网络安全是几类科学
三级网络技术考试
软件开发及测试平台
人人贷 服务器
如何获得服务器的端口号
黑客网络安全环境搭建
数据库为啥设计成1对1
网络安全 横向人员
对我国数据库技术创新的建议
诸暨软件开发公司电话
网络安全部门具体有哪些
广州鞋品荟互联网科技
华硕电脑网络安全模式怎么进
数据库比网页制作难吗
关于网络安全感悟的作文
钉钉数据库需要整理是什么意思
舆情监控服务器
js脚本自动答题数据库
大连警官学院网络安全与执法