相信有许多人像我一样,并不知道这个到底是啥意思,有啥作用。
下面让我来介绍一下这个在pygame中挺重要的角色。
“sprite”,中文翻译“精灵”,一般是指游戏动画中独立移动的一个画面元素,在pygame中可以是一个带有图像(Surface)和大小位置(Rect)的对象。精灵特别适合在Python语言中使用。
具体的功能就是上面这37个列出的功能了。1、角色可直接拖动(compound造型不支持)。
2、提供像Scratch中的三种旋转模式。精灵对象的_rotatemode属性值为0,代表可360度旋转,为1时代表可左右翻转,为2时角色不会旋转。3、rotatemode:返回或设置旋转模式。 4、addx:x坐标增加。5、addy:y坐标增加。6、scale:缩放,只有一个参数。7、gotorandom:到随机位置。8、heading:重定义了这个方法,不带参数能获取当前朝向。带参数参让角色朝向某对象或坐标。9、show:显示对象,带参数时让角色显示一定的时间后又会隐藏,异步执行。
10、hide:隐藏对象,带参数时让角色隐藏一定的时间后又显示,异步执行。11、mouse_pos:获取鼠标指针坐标。12、move:移动水平dx距离和垂直dy距离。13、collide:和另一个角色或图章的碰撞方法,采用的是矩形碰撞,可以有scale参数,表示缩放绑定盒子,如scale=0.5时,绑定盒宽高各缩一半。14、collidemouse:碰到鼠标指针。15、collide_edge:碰到边缘检测。16、bounce_on_edge:碰到边缘就反弹,适合于用fd命令让角色前进后再使用。17、bbox:获取角色绑定盒,也可获取图章的绑定盒。18、randomcolor:随机颜色,较鲜艳。19、randomheading:随机方向。20、remove:移除方法,把自己从屏幕的_turtles列表中删除,并根据item号删除自己在画布上的形状,清除说话泡泡对象。21、stamp:重定义了Turtle类的图章方法,新增的参数可以让图章在一定时间后自动被清除,异步执行。22、stampmove:根据图章编号水平和垂直移动图章。23、stampgoto:移动图章编号到指定坐标,暂不支持复合图形的图章,它们的图章编号是一个元组。
24、play:播放方法,目前只支持播放无损压缩的wav音频文件,支持显示歌词。 25、setalpha:设置透明度方法。参数为从0到255的数值。0代表完全透明,255代表不透明,128代表半透明。对于polygon和compound造型来说,0代表透明,非0代表不透明。对于image来说,设置角色的透明度从0到255的值就会产生从透明到不透明的渐变效果。26、getalpha:得到透明度,从0到255的整数。27、set_tag:设置角色的标签。它是一个字符串,用于分组。28、get_tag:获取角色的标签。29、say:说话方法,会显示气泡。默认时间为2秒,默认阻塞进程。30、saycolor:返回或设置说话的字的颜色。31、saybordercolor:返回或设置说话泡泡的边框颜色。 32、write:重定义写方法,增加angle参数,可以写斜字,默认为黑体,12号。33、reborn:“重生”方法,让角色隐藏后在另一坐标重新显示。复用角色之用,可加delay参数,意为在一定的时间后才显示,异步执行。34、nextcostume:下一个造型,别名是nextshape。35、previouscostume:上一个造型,别名是previousshape。36、costumeindex:指定造型编号,别名是shapeindex。37、update:重绘角色。
具体使用的话,看看下面的这个例子:
def check_fleet_edges(ai_settings, aliens):
"""有外星人到达边缘时采取相应的措施"""
for alien in aliens.sprites():
if alien.check_edges():
change_fleet_direction(ai_settings, aliens)
break
def change_fleet_direction(ai_settings, aliens):
"""将整群外星人下移,并改变它们的方向"""
for alien in aliens.sprites():
alien.rect.y += ai_settings.fleet_drop_speed
ai_settings.fleet_direction *= -1
def update_aliens(ai_settings, aliens):
"""检查是否有外星人位于屏幕边缘,并更新整群外星人的位置"""
check_fleet_edges(ai_settings, aliens)
aliens.update()
这个例子呢,就是外星人大战飞船的进阶版,生成外星人,然后根据外星人的移动来进行改变他们的方向。
在check_fleet_edges()中,我们遍历外星人群,并对其中的每个外星人调用check_edges()。如果check_edges()返回True,我们就知道相应的外星人位于屏幕边缘,需要改变外星人群的方向,因此我们调用change_fleet_direction()并退出循环。在change_fleet_direction()中,我们遍历所有外星人,将每个外星人下移fleet_drop_speed设置的值;然后,将fleet_direction的值修改为其当前值与-1的乘积。
其实sprite相当于一个便捷的类让我们的图像来与其他的进行交互,不过其实具体的使用方法还是要看官方文档的,官方文档入口。
具体有什么问题可以发送到评论区,有什么难题我们可以一起讨论。
其实sprite相当于一个便捷的类让我们的图像来与其他的进行交互,不过其实具体的使用方法还是要看官方文档的,官方文档入口。
具体有什么问题可以发送到评论区,有什么难题我们可以一起讨论。