AttributeError: 'Mob' object has no attribute '_Sprite__g'
AttributeError: 'Mob' object has no attribute '_Sprite__g'
我正在尝试制作一个在屏幕上多次生成的精灵。精灵将在碰撞中使用。精灵之前有一个随机问题,我相信已经解决了。但是none越少精灵组有问题
AttributeError: 'Mob' 对象没有属性 '_Sprite__g'
class Mob(pygame.sprite.Sprite):
def __init__(self, x, y):
self.image = pygame.Surface((90, 90)).convert_alpha()
self.image = pygame.image.load(badguy_file).convert_alpha()
self.image = pygame.transform.scale(self.image, (100, 100))
self.rect = pygame.Rect(x, y, 100, 100)
self.x = x
self.y = y
self.rect.x = random.randrange(800 - 100)
self.rect.y = random.randrange(-100, -40)
self.speedx = random.randrange(4)
self.mask = pygame.mask.from_surface(self.image)
def update(self):
self.rect.y += self.speedy
if self.rect.top > height + 10 or self.rect.left < -25 or self.rect.right > width + 20:
self.rect.x = random.randrange(width - self.rect.width)
self.rect.y = random.randrange(-100, -40)
self.speedx = random.randrange(1,0)
def render(self, screen):
screen.blit(self.image, (self.x, self.y))
mobs = pygame.sprite.Group()
for i in range(8):
mob = Mob(200,300)
mobs.add(mob)
你必须在Mob的__init__
函数中调用Sprite
的__init__
函数(或者使用super()
,取决于你的python版本),喜欢
class Mob(pygame.sprite.Sprite):
def __init__(self, x, y):
super().__init__() # Preferred
...
...
或
class Mob(pygame.sprite.Sprite):
def __init__(self, x, y):
pygame.sprite.Sprite.__init__(self) # For older versions
...
...
我正在尝试制作一个在屏幕上多次生成的精灵。精灵将在碰撞中使用。精灵之前有一个随机问题,我相信已经解决了。但是none越少精灵组有问题
AttributeError: 'Mob' 对象没有属性 '_Sprite__g'
class Mob(pygame.sprite.Sprite):
def __init__(self, x, y):
self.image = pygame.Surface((90, 90)).convert_alpha()
self.image = pygame.image.load(badguy_file).convert_alpha()
self.image = pygame.transform.scale(self.image, (100, 100))
self.rect = pygame.Rect(x, y, 100, 100)
self.x = x
self.y = y
self.rect.x = random.randrange(800 - 100)
self.rect.y = random.randrange(-100, -40)
self.speedx = random.randrange(4)
self.mask = pygame.mask.from_surface(self.image)
def update(self):
self.rect.y += self.speedy
if self.rect.top > height + 10 or self.rect.left < -25 or self.rect.right > width + 20:
self.rect.x = random.randrange(width - self.rect.width)
self.rect.y = random.randrange(-100, -40)
self.speedx = random.randrange(1,0)
def render(self, screen):
screen.blit(self.image, (self.x, self.y))
mobs = pygame.sprite.Group()
for i in range(8):
mob = Mob(200,300)
mobs.add(mob)
你必须在Mob的__init__
函数中调用Sprite
的__init__
函数(或者使用super()
,取决于你的python版本),喜欢
class Mob(pygame.sprite.Sprite):
def __init__(self, x, y):
super().__init__() # Preferred
...
...
或
class Mob(pygame.sprite.Sprite):
def __init__(self, x, y):
pygame.sprite.Sprite.__init__(self) # For older versions
...
...