我可以創建這個類的一個實體,它運行良好。但是,每當嘗試創建第二個實體時,即使第一個物件已被洗掉,它也會回傳錯誤。這也很奇怪,因為有一個與這個相同的類,它可以根據需要創建盡可能多的實體而不會出錯。
兩次都以完全相同的方式制作物件。
class GOAL(pygame.sprite.Sprite):
def __init__(self,spawnx,spawny):
super().__init__()
self.image = goal
self.surf = pygame.Surface(self.image.get_rect().size)
self.rect = self.image.get_rect(topleft = (spawnx,spawny))
類啟動代碼。
goal = GOAL((lineCount*100),(characterCount*100))
all_sprites.add(goal)
類創建代碼。
Traceback (most recent call last):
File "C:\Users\User\Documents\python\pygame\simian shenanigans\simian shenanigans.py", line 975, in <module>
mainmenu()
File "C:\Users\User\Documents\python\pygame\simian shenanigans\simian shenanigans.py", line 689, in mainmenu
entity.clicked()
File "C:\Users\User\Documents\python\pygame\simian shenanigans\simian shenanigans.py", line 540, in clicked
self.sendfunction()
File "C:\Users\User\Documents\python\pygame\simian shenanigans\simian shenanigans.py", line 732, in playmenu
entity.clicked()
File "C:\Users\User\Documents\python\pygame\simian shenanigans\simian shenanigans.py", line 540, in clicked
self.sendfunction()
File "C:\Users\User\Documents\python\pygame\simian shenanigans\simian shenanigans.py", line 768, in level1
levelgeneration(levelToGenerate,all_sprites,enemies,walls,playerGroup)
File "C:\Users\User\Documents\python\pygame\simian shenanigans\simian shenanigans.py", line 903, in levelgeneration
goal = GOAL((lineCount*100),(characterCount*100))
File "C:\Users\User\Documents\python\pygame\simian shenanigans\simian shenanigans.py", line 638, in __init__
self.surf = pygame.Surface(self.image.get_rect().size)
AttributeError: 'GOAL' object has no attribute 'get_rect'
錯誤代碼。
請詢問是否需要顯示任何其他代碼。整件事是 1000 行,并不是所有相關的,所以我試圖包含必要的代碼。
uj5u.com熱心網友回復:
看起來您正在設定self.image為goal,它是 的一個實體GOAL,假設這與類啟動代碼中的目標相同。但是,即使GOAL是 a pygame.sprite.sprite,該類也沒有get_rect功能!
根據此處的示例,我認為您想參考pygame.Surface:
class Block(pygame.sprite.Sprite):
def __init__(self, color, width, height):
# Call the parent class (Sprite) constructor
pygame.sprite.Sprite.__init__(self)
# Create an image of the block, and fill it with a color.
# This could also be an image loaded from the disk.
This--->self.image = pygame.Surface([width, height])
self.image.fill(color)
self.rect = self.image.get_rect()
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/453638.html
上一篇:包含其他物件陣列的類物件
