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

1 多帧动画介绍

通过多个帧实现动画的原理如图1所示。

图1 多个帧

其中图1包含了6个飞龙的动作,这6个动作可以看作6个帧,按照一定的时间间隔显示这6个帧,就可以得到飞龙飞行的效果,如图2所示。

图2 飞龙飞行动画

相关链接1 帧:是影像动画中的最小单位画面。在影像动画中,一帧是一幅静止的画面,连续的帧形成动画或视频。

2 Sprite类介绍

Pygame中的Sprite类用于游戏开发,表示游戏中的角色、道具或者背景等各种元素。通过Sprite类,可以轻松管理和操作游戏中的图形对象,使得游戏开发变得更加简单和高效。Sprite类也叫做“精灵”类。

3 自定义“精灵”类的子类

通过“精灵”类实现多帧动画,一般是自定义精灵类的子类,该子类表示游戏中的“飞龙”这个角色。

3.1 子类的__init__()方法

代码如图3所示。

图3 自定义“精灵”类的子类

从图3中可以看出,MySprite类是派生自pygame.sprite.Sprite类的子类;在该类的__init__()方法中,第7行代码调用其父类的__init__()方法,第8-9行定义了MySprite类的两个属性image和rect,这两个属性是自定义“精灵”类的子类必备的,分别表示该类对应的图片以及图片的大小。除了以上两个属性,在__init__()方法中还定义了其它属性,这些属性没有在图3的代码中显示出来,后续用到哪个属性再详细讲解。

3.2 子类的load()方法

MySprite类load()方法作用是导入包含“飞龙”所有帧的图片,即图1显示的图片文件;设置每帧的宽度、高度及范围;获取图片中最后一帧的编号。

3.2.1 子类的load()方法的格式

子类的load()方法的格式如图4所示。

图4 load()方法的格式

其中,filename表示要导入的图片文件名;width和height表示每一帧的宽度和高度;columns表示图片中包含的帧有多少行。

3.2.2 导入图片

在load()函数中,首先导入图片文件,代码如图5所示。

图5 导入图片文件代码

其中,master_image是MySprite类的属性,在其__init__()方法中定义;通过pygame.image.load()方法导入图片文件,convert_alpha()方法的作用是将图片转换为支持透明度的更高效的格式,使用这种转换后的格式,当调用blit()方法显示该图片时,可以提高显示速度。

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值