什么是PyGame逐帧动画
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"什么是PyGame逐帧动画",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"什么是PyGame逐帧动画"吧!什么是逐帧动画?逐帧动画,是一种
千家信息网最后更新 2026年11月03日什么是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安全错误
数据库的锁怎样保障安全
广东万易互联网科技有限公司惠州分公司
亿人帮互联网科技有限公司
高科技互联网
互联网科技公司的优势
科技股互联网
美国互联网科技巨头监管
互联网医疗科技
远信互联网科技
科技互联网公司logo
上海卓越科技 互联网
剑昆互联网络科技有限公司临桂
汽车互联网创新科技园
呼和浩特新华互联网科技学院
青海科技产业互联网发展
中国科技创新与世界互联网大会
保险科技服务互联网营销体系
本届互联网大会上的黑科技
九思连强互联网电子科技有限公司
普陀区互联网教育科技管理办法
保山浩联互联网科技有限公司
手磨咖啡
金融科技创新监管互联网金融
互联网科技网站
互联网前沿科技
云创客互联网科技公司
阿大互联网科技有限公司
互联网与医疗科技
小米互联网科技园入驻
互联网科技创新方面的资料
科技互联网企业在行动