以下块在用作类属性时会产生错误cannot convert without pygame.display initialized
:
class Tile:
hidden_image = pygame.image.load('image0.bmp')
hidden_image.convert()
但是,当我在类Tile
的任何方法下使用它时,它都有效。即。
def __init__(self, x, y, width, height, image):
.....
def draw(self):
hidden_image = pygame.image.load('image0.bmp')
hidden_image.convert()
有任何解释吗?
答案 0 :(得分:2)
在运行pygame.init()
之前,您必须运行pygame.screen.set_mode()
或更确切地说hidden_image.convert()
,因为convert()
必须知道显示配置 - 即。颜色深度 - 正确转换图像。
因为它是class属性所以它在加载脚本时在开始时执行,所以你必须在类定义之前放置pygame.init()
和pygame.screen.set_mode()
。或者您必须在convert()
中使用__init__
。
draw()
函数在pygame.screen.set_mode()
之后执行,因此可以正常工作。
PyGame doc:pygame.Surface.convert