先看下前面的文字,里面介绍了滚动背景的实现。但没有用到精灵类。
https://mp.csdn.net/postedit/88089379
前面的日记里,用精灵类实现了大部分的功能,除了滚动背景,大家可以下载下我编写的飞机大战的源代码,里面实现了滚动背景的效果。而且能自动切割图片,自动生成所需背景的列表。
因为在单个精灵类里,只能有一个image存在,滚动背景一般是两个图片image。要实现效果,只能建立两个精灵,在主函数里进行坐标传递,分别绘制两个精灵的图片。
偶然在国外的网站上,找到了很多示例,里面的例题让人受益匪浅。其中有Layer的运用加滚动背景的实现。
用一个allgroups来管理所有的层,而且能自动管理每个精灵的绘制,更新。代码精炼、轻松不少。
update()函数是关键,要多多理解一下。
class Background(pygame.sprite.Sprite):
"""
generate a Background sprite for the background,
to demonstrate vertical scrolling.background slide from top to bottom
parameter: vect_pos must use in pygame.math.Vector2D type
"""
def __init__(self, vect_pos):
self._layer = -1
self.groups = allgroup, backgroundgroup
pygame.sprite.Sprite.__init__(self, self.groups) # THE Line
self.image = pygame.image.load('data/bg.png').convert_alpha()
# self.image.convert_alpha()
self.rect = self.image.get_rect()
self.pos = vect_pos
self.rect.x = self.pos.x
self.rect.y = self.pos.y
self.parent = False
def update(self):
self.rect.y += 1