创建某些对象的第二个实例后,pygame属性错误
我可以创建此类的一个实例,并且功能正常。但是,每当尝试创建第二个实例时,即使删除了第一个对象,也会返回错误。这也很奇怪,因为有一个类与该类相同的类,可以在没有错误的情况下根据需要创建的尽可能多的实例。
两次都以完全相同的方式使对象。
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行,而不是全部相关,因此我试图包括必要的代码。
I can create one instance of this class, and it functions fine. However whenever a second instance is attempted to be created, even if the first object has been deleted, it returns an error. This is also odd because there is a class identical to this one, which can have as many instances created as needed with no errors.
Object is being made the exact same way both times.
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))
Class initiation code.
goal = GOAL((lineCount*100),(characterCount*100))
all_sprites.add(goal)
Class creation code.
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'
Error code.
Please ask if any other code required to be shown. Whole thing is 1000 lines and not all relevant so I have tried to include necessary code.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看起来您正在将
self.image
设置为goal
,它是GOAL
的实例,假设这与类启动代码。然而,即使GOAL
是一个pygame.sprite.sprite
,该类也没有get_rect
函数!我想你想参考 pygame.Surface相反,根据此处的示例:
It looks like you're setting
self.image
to begoal
, which is an instance ofGOAL
, assuming thats the same goal as in the class initiation code. However, even thoughGOAL
is apygame.sprite.sprite
, that class doesn't have aget_rect
function!I think you want to reference the pygame.Surface instead, according to the example here: