当前位置: 首页 > news >正文

Pygame中Sprite类实现多帧动画3-2

3.2.3 设置帧的宽度、高度、范围及列数

通过如图6所示的代码设置帧的宽度、高度、范围及列数。

图6 设置帧的宽度、高度、范围及列数的代码

其中,frame_width、frame_height、rect和columns都是MySprite类的属性,在其__init__()方法中定义,分别表示帧的宽度、高度、范围及列数。

3.2.4 获取图片中最后一帧的编号

获取图片中最后一帧的编号的代码如图7所示。

图7 获取图片中最后一帧的编号的代码

其中,第1行代码通过get_rect()方法获取整张图片的宽度和高度,保存在rect变量中,第2行代码通过rect.width//width获取整张图片中帧的列数,rect.height//height获取整张图片中帧的行数,两者的乘积减去1即为最后一帧的编号(帧的编号从0开始)。

注意1 图7代码中的rect与图6代码中的self.rect不是同一个变量。

注意2 帧的编号从0开始,即第一帧的编号是0,所以最后一帧的编号是帧总数减1。

3.3 子类的update()方法

MySprite类的update()方法作用是显示指定帧。

3.3.1 update()方法的格式

update()方法的格式如图8所示。

图8 update()方法的格式

其中,参数current_time表示当前时间,用于确定是否显示下一帧;参数rate表示持续显示每一帧的时间,默认值是30。

3.3.2 判断当前显示帧的编号

update()方法通过帧编号来确定当前显示哪一帧,判断当前显示帧的编号的代码如图9所示。

图9 判断当前显示帧的编号的代码

其中,last_time表示显示上一帧的时间,current_time表示当前时间,current_time>self.last_time+rate表示上一帧图像已经持续显示了rate时间了,此时该显示下一帧图像了,frame表示显示的当前帧的编号,

self.frame+=1表示显示下一帧图像;第二个if语句判断当前显示帧的编号是否是最后一帧,如果是最后一帧,则要循环显示第一帧,因此self.frame=self.first_frame;当显示新的一帧图像后,上一帧图像的时间更新为当前时间。

注意3 代码中的last_time、frame、first_frame均为MySprite类的属性,在其__init__()方法中定义。

3.3.3 显示指定帧图像

在确定了当前显示帧的编号后,使用如图10所示的代码显示指定帧图像。

图10 显示指定帧图像的代码

其中,第43行代码中的old_frame表示前一帧的编号,如果当前要显示帧的编号不等于前一帧的编码,表示此时要显示新的帧图像了;第44-45行代码获取当前帧图像左上角的坐标,frame_x和frame_y分别表示左上角的横纵坐标,rect表示当前帧的范围,如图11所示。

图11 frame_x、frame_y和rect的示意图

第47行代码通过subsurface()方法显示整张图片中的某一帧,参数rect即为显示的范围;最后第48行代码,将old_frame即上一帧的编号更新为当前帧编码。

相关文章:

Pygame中Sprite类实现多帧动画3-2

3.2.3 设置帧的宽度、高度、范围及列数 通过如图6所示的代码设置帧的宽度、高度、范围及列数。 图6 设置帧的宽度、高度、范围及列数的代码 其中,frame_width、frame_height、rect和columns都是MySprite类的属性,在其__init__()方法中定义,…...

C#发送正文带图片带附件的邮件

1,开启服务,获取授权码。以QQ邮箱为例: 点击管理服务,进入账号与安全页面 2,相关设置参数,以QQ邮箱为例: 登录时,请在第三方客户端的密码输入框里面填入授权码进行验证。&#xff0…...

【C#跨平台开发详解】C#跨平台开发技术之.NET Core基础学习及快速入门

1. C#与.NET的发展历程 C#是由Microsoft开发的现代编程语言,最初伴随着.NET Framework发布。随着技术的进步,特别是针对跨平台开发的需求,Microsoft推出了.NET Core,这是一个开源且跨平台的框架,支持Windows、macOS和…...

请解释Java中的死锁产生的原因和解决方法。什么是Java中的并发工具类?请列举几个并解释其用途。

请解释Java中的死锁产生的原因和解决方法。 Java中的死锁是指两个或两个以上的线程在执行过程中,因为争夺资源而造成的一种相互等待的现象,若无外力作用,这些线程都将无法向前推进。死锁是并发编程中常见的问题,它会导致程序运行…...

三分钟带你看懂,低代码开发赋能办公方式转变

随着技术的不断进步,企业对办公效率和灵活性的需求日益增长。低代码开发作为一种新兴的开发模式,正在改变传统的办公方式,让非技术背景的业务人员也能参与到应用的创建和维护中来。本文将带你快速了解低代码开发如何赋能办公方式的转变。 什么…...

视频剪辑软件哪个好用?11款软件轻松上手,让创意视频流畅呈现!

视频剪辑已经涉及到很多个领域,视频剪辑软件的需求也是越来越普遍了。很多朋友在日常办公学习中,经常会遇到视频剪辑的问题。借助专业的视频剪辑软件,我们可以快速的对视频进行剪辑,制作出属于自己的作品。 市面上有各种各样的视频…...

pytest二次开发:生成用例参数

pytest.fixture是一个装饰器,用于声明一个fixture。Fixture是pytest中的一个核心概念,它提供了一种将测试前的准备代码(如设置测试环境、准备测试数据等)和测试后的清理代码(如恢复测试环境、删除临时文件等&#xff0…...

想抹黑华为的 请换一种方式

文|琥珀食酒社 作者 | 积溪 咱能不能有点创意? 能不能换个方式? 之前我说预测过 我说华为的三折叠手机 MateXT非凡大师发布 会引来一大波华为黑 还真是被我说中了 华为MateXT刚曝光 就被黄牛炒到10多万 有人说华为要割韭菜 是电子…...

学习学习学习

​ 1. 面试算法 算法题空间限制64MB 2x 10^7 int codetop.cc 数字中文读 🔗 kmp 奶牛生小牛问题 丑数LCR 168. 丑数 - 力扣(LeetCode) 166. 分数到小数 - 力扣(LeetCode) 小数循环节 深入解析力扣166题&#xff…...

requestAnimationFrame原理和使用

requestAnimationFrame 是一个用于在浏览器中实现高效动画的方法。它告诉浏览器你希望执行一个动画,并在下一次重绘之前调用指定的回调函数来更新动画。浏览器会自动优化动画的刷新频率,以确保动画的流畅性和性能。 原理 帧刷新:浏览器通常…...

线程的状态(java)

“苦? 何止是苦~~~~~” 本期内容来分享一下线程状态相关的知识哦!!! 对于进程来说,进程是有两种状态的。 一种是就绪状态:正在CPU上执行,或者随时可以去CPU上执行的。 另一种是阻塞状态&…...

Linux IO模型:IO多路复用

● 应用程序中同时处理多路输入输出流,若采用阻塞模式,得不到预期的目的; ● 若采用非阻塞模式,对多个输入进行轮询,但又太浪费CPU时间; ● 若设置多个进程/线程,分别处理一条数据通路&#xff…...

[数据集][目标检测]电梯内广告牌电动车检测数据集VOC+YOLO格式2787张4类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2787 标注数量(xml文件个数):2787 标注数量(txt文件个数):2787 标注…...

MATLAB下载详细教程及下载链接

欢迎大家进评论区交流经验 1. 准备工作 下载MATLAB安装包:首先,从MathWorks官方网站(http://www.mathworks.com)下载适合您操作系统的MATLAB安装包。确保选择与您的操作系统(如Windows、macOS或Linux)兼容的…...

利用发电量和气象数据分析来判断光伏仿真系统的准确性

随着光伏产业的迅速发展,光伏仿真系统通过集成气象数据分析、发电量分析、投融资分析及损耗估算等功能,为光伏项目的全生命周期管理提供了科学依据。 光伏仿真系统集成了气象数据分析、发电量预测、投融资分析、损耗估算及光伏设计等功能。其中&#xf…...

Model-based RL动态规划(基于价值、基于策略,泛化迭代)

白盒环境和黑盒环境 白盒环境:知道环境的状态转移函数P(s’|s)或P(s’|s,a)和奖励函数R(s)或R(s,a):   白盒环境下的学习相当于直接给出了有监督学习的数据分布(就是有了目标靶子),不需要采样了,直接最小…...

外接串口板,通过串口打开adb模式

一、依赖库 import subprocess import serial from serial.tools import list_ports import logging import time 二、代码 import subprocessimport serial from serial.tools import list_ports import logging import timedef openAdb(com):# com []# for i in list_por…...

ssm微信小程序校园失物招领论文源码调试讲解

第二章 开发技术与环境配置 以Java语言为开发工具,利用了当前先进的SSM框架,以MyEclipse10为系统开发工具,MySQL为后台数据库,开发的一个微信小程序校园失物招领。 2.1 Java语言简介 Java是由SUN公司推出,该公司于20…...

iOS 15推出后利用邮件打开率的7种方法

自从苹果在2021年底推出iOS 15以来,邮件打开率就一直是一个让人头疼的指标。 Klaviyo市场情报主管Mindy Regnell表示:“对于启用了Apple邮件隐私保护(MPP)的用户来说,苹果会打开这些邮件并预先下载内容到他们的服务器…...

以太网--TCP/IP协议(一)

概述 以太网是局域网的一种,其他的比如还有令牌环、FDDI。和局域网对应的就是广域网,如Internet,城域网等。 从网络层次看,局域网协议主要偏重于低层(业内一般把物理层、数据链路层归为低层)。以太网协议…...

Frida Hook OkHttp捕获URL与请求头实战指南

1. 为什么Hook OkHttp的URL和请求头是安卓逆向的“第一道门”在真实项目里,我见过太多人一上来就猛攻so层、硬啃ART虚拟机机制,结果两周过去连个登录接口的明文参数都捞不到。其实绝大多数安卓App的网络通信早已不是靠WebView或原生HttpURLConnection打天…...

OpenSpeedy:终极免费游戏加速神器,一键释放游戏潜能

OpenSpeedy:终极免费游戏加速神器,一键释放游戏潜能 【免费下载链接】OpenSpeedy 🎮 An open-source game speed modifier. 项目地址: https://gitcode.com/gh_mirrors/op/OpenSpeedy 还在为单机游戏中的卡顿和缓慢进度而烦恼吗&#…...

3步上手UI-TARS智能助手:让AI帮你自动化电脑和浏览器任务

3步上手UI-TARS智能助手:让AI帮你自动化电脑和浏览器任务 【免费下载链接】UI-TARS-desktop The Open-Source Multimodal AI Agent Stack: Connecting Cutting-Edge AI Models and Agent Infra 项目地址: https://gitcode.com/GitHub_Trending/ui/UI-TARS-desktop…...

GTA V脚本开发入门:5步掌握ScriptHookV核心技术

GTA V脚本开发入门:5步掌握ScriptHookV核心技术 【免费下载链接】ScriptHookV An open source hook into GTAV for loading offline mods 项目地址: https://gitcode.com/gh_mirrors/sc/ScriptHookV 你是否想过为GTA V创建自己的游戏模组,但被复杂…...

从一道SWPUCTF题复盘PHP文件包含漏洞:allow_url_include开启后,除了伪协议还能怎么玩?

从SWPUCTF赛题探索PHP文件包含漏洞的深层攻防 在CTF竞赛和实际渗透测试中,PHP文件包含漏洞一直是Web安全领域的重要课题。这道来自SWPUCTF新生赛的题目看似简单,却蕴含了丰富的攻防对抗思路。当allow_url_include配置被开启时,攻击面会显著扩…...

3分钟学会:免费歌词制作工具让你轻松成为音乐剪辑高手 [特殊字符]

3分钟学会:免费歌词制作工具让你轻松成为音乐剪辑高手 🎵 【免费下载链接】lrc-maker 歌词滚动姬|可能是你所能见到的最好用的歌词制作工具 项目地址: https://gitcode.com/gh_mirrors/lr/lrc-maker 你是否曾经想为自己喜欢的歌曲制作…...

从官方例程到实际项目:AXI Timer v2.0在Zynq平台上的避坑指南与调试实录

从官方例程到实际项目:AXI Timer v2.0在Zynq平台上的避坑指南与调试实录 在嵌入式系统开发中,定时器是最基础也最关键的硬件外设之一。Xilinx提供的AXI Timer v2.0 IP核因其灵活的配置选项和丰富的功能特性,成为Zynq平台上实现精确时间控制的…...

2000-2025年区县国家数字乡村试点DID

2019年《数字乡村发展战略纲要》明确数字乡村作为乡村振兴战略方向与数字中国重要内容,2022年《数字乡村发展行动计划(2022-2025年)》,部署了8个方面重点行动“数字乡村”一般指随着网络化、信息化、数字化在农业农村经济社会发展…...

如何用Blender3mfFormat插件完美处理3MF文件:终极3D打印工作流指南

如何用Blender3mfFormat插件完美处理3MF文件:终极3D打印工作流指南 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 你是否曾经在Blender中为3D打印工作流而烦…...

异常检测实战:从面试陷阱到产线落地的20个关键问题

1. 项目概述:这不是刷题手册,而是一张通往机器学习工程现场的“通关地图”“Crack ML Interviews with Confidence: Anomaly Detection (20 Q&A)”——这个标题里藏着三个被绝大多数求职者严重低估的关键信号:Crack不是“背答案”&#x…...