我已输入代码self.rect = pygame.Rect(x, y, 100, 100)
。有一个AttributeError: type object 'MobRow1' has no attribute 'rect'
。当我插入rect
时,为什么会不断弹出此错误。
我已经尝试过self.rect = pygame.Rect(self.x, self.y, 100, 100)
,但这仍然行不通。
class MobRow1(pygame.sprite.Sprite):
def __init__(self, x, y):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load(badguy_file).convert_alpha()
self.image = pygame.transform.scale(self.image, (50, 50))
self.x = x
self.y = y
self.rect = pygame.Rect(x, y, 100, 100)
self.mask = pygame.mask.from_surface(self.image)
def update(self):
self.rect.y += self.speedy
self.rect.x += self.speedx
答案 0 :(得分:2)
您致电MobRow1.update(screen_rect)
,这将导致self
为screen_rect
。
因此,调用self.rect.y += self.speedy
时,它将失败并显示AttributeError
,因为self
(即screen_rect
实例)Rect
不会具有rect
属性。
您应该做的是在update
的实例上调用MobRow1
,而不是在MobRow1
类本身上调用。另外,如果执行此操作,则必须向其update
函数添加另一个参数,或者从函数调用中删除screen_rect
参数。