如何解决如何在一个班级中绘制多个精灵
我正在制作一个以行星为背景的太空射击游戏。我决定在背景中画一些行星,当我向右移动时,行星应该向左移动。那是为了让玩家感觉到飞船在空间中移动。然而,我本可以只为一颗行星做到这一点。当尝试将其他行星应用到一个类中时,它会不断变化到另一个行星。
lanetdic = {'planets':[]}
imagestoload = ['Feza/graphs/sprites/saturne.png']
for i in imagestoload:
img = pg.image.load(i).convert_alpha()
planetdic['planets'].append(img)
这是加载精灵。在下面,我为行星创建了一个类。
class Planets(pg.sprite.Group):
def __init__(self):
pg.sprite.Group.__init__(self)
self.frame = 0
self.image = planetdic['planets'][self.frame]
self.rect = self.image.get_rect()
self.rect.center = (500+100*self.frame,HEIGHT/2)
self.pos = vec(500,HEIGHT/2)
self.vel = vec(0,0)
self.acc = vec(0,0)
def update(self):
#self.acc = vec(0,0)
self.frame = (self.frame + 1)%len(planetdic['planets'])
也许为一个星球创建一个类是不明智的,但如果有请告诉我,我找不到其他方法。
如果我们再次切入正题。在下面我做了一个 for 循环来加载图像。并再次使用相同的 for 循环
planetdic = {'planets':[]}
imagestoload = ['Feza/graphs/sprites/saturne.png','Feza/graphs/sprites/jupiter.png','Feza/graphs/sprites/venus.png','Feza/graphs/sprites/uranus.png','Feza/graphs/sprites/neptune.png']
for i in imagestoload:
img = pg.image.load(i).convert_alpha()
planetdic['planets'].append(img)
当我应用多个图像时,它会在几毫秒内将一个图像更改为另一个图像,我该如何防止这种情况发生。我只想在背景中显示每个行星并让它们移动。
解决方法
如何在一个类中绘制多个精灵
你不这样做。但是,您可以为一个类创建多个 instance objects。
图像 (Surface) 必须是类 Planet
的构造函数的参数。 Planet
类是 sprite.Sprite
的子类,而不是 sprite.Group
:
class Planet(pg.sprite.Sprite):
def __init__(self,image):
pg.sprite.Group.__init__(self)
self.frame = 0
self.image = image
self.rect = self.image.get_rect()
self.rect.center = (500+100*self.frame,HEIGHT/2)
self.pos = vec(500,HEIGHT/2)
self.vel = vec(0,0)
self.acc = vec(0,0)
为每个行星创建一个 Planet
类的新实例对象:
planets = pg.sprite.Group()
imagestoload = ['Feza/graphs/sprites/saturne.png','Feza/graphs/sprites/jupiter.png','Feza/graphs/sprites/venus.png','Feza/graphs/sprites/uranus.png','Feza/graphs/sprites/neptune.png']
for filepath in imagestoload:
img = pg.image.load(filepath).convert_alpha()
planet = Planet(img)
planets.add(planet)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。