yk坤帝yk坤帝2022-05-1415:27发表于山东
桌面宠物的各种动画效果,可以看作是由一个个GIF动图拼接而成,我们需要准备多组GIF动图来实现桌面宠物的动作切换。
1.2.1通过pr实现视频转GIF
pr在导出的时候选择动画GIF可以直接导出GIF动图。
当然了想要白底就需要自已用“蒙版”和画笔工具自己抠图了。
1.2.2通过ps实现图片组转GIF
然后选择最上方的文件,选择导出,选择导出为web所用格式旧版,即可
1.2.3百度一下,获取网上现成的GIF资源
①百度:“制作GIF动图”
②百度“GIF动图资源”
你想要的角色人物素材都在这里!最实用的2d游戏素材!-知乎:
项目的目录结构整体如下:main.py为主程序代码。
normal下的GIF图是宠物平常会随机切换的动作GIF图,click下面的GIF图是点击宠物之后的宠物动作的GIF图
dialog.txt记录了宠物的对话信息
tigerIcon.jpg是缩小到托盘后托盘图标的图片
2.2.1引用包
os包用于加载文件,sys包用于退出程序,random包用于程序中一些需要调用随机数的操作。其他的三个包则是用于实现桌面宠物的基础。
整个运行流程为:
(1)通过self.init():实现窗体的初始化,宠物的GIF图在这个窗体中播放。
(2)通过self.initPall():配置托盘化
(3)通过self.initPetImage():将宠物的静态GIF资源,包括对话和GIF动图进行加载
(4)通过self.petNormalAction():实现宠物随机切换动作和语句的功能
这几句的作用是对展示宠物的窗体进行一些初步的设置,使得白色GIF图能够去掉背景的白色,将GIF图透明的展示出来
主要有下面这几个操作:
(1)读取静态图片资源设置托盘化的图标
(2)设置托盘化图片点击右键显示的菜单,并对这些菜单的点击操作进行设置
流程代码如下:
静态资源的加载主要涉及两个部分,对话框内容的加载和图片内容的加载。
self.pet1和self.dialog在初始化的时候即定义了。这里可以按照自己的喜好进行拓展,用多个if-elseif实现多种状态的切换和定义,增加一些喂食,玩耍动作等。
实现宠物的拖动主要通过三个函数实现,mouserPressEvent负责在鼠标点击判断其是否在宠物窗口上,如果在则将宠物和鼠标的位置绑定,并执行点击改变宠物GIF图和对话框的操作。
mouseMoveEvent实现按下后宠物跟着鼠标移动
mouseReleaseEvent将之前的锁定取消
退出操作通过qApp.quit()实现,直接退出相应的QT程序。
隐藏操作则通过self.setWindowOpacity(0)实现,这个可控制窗口的透明度。
进入打开cmd命令行,进入项目目录,输入命令
这里因为我自己的原因,需要将main.exe放到主目录下才可正常运行
DeskTopPetEXE为带打包好的文件。
DeskTopPet是打包前的文件。
写之前挺开心的,写的时候也挺开心的,写完之后就有点索然无味了。