为什么我不能使用 pygame.image.load 作为类属性?它说“如果没有初始化 pygame.display 就无法转换”

2023-12-12

以下块产生错误cannot convert without pygame.display initialized当用作类属性时:

class Tile:
    hidden_image = pygame.image.load('image0.bmp')
    hidden_image.convert()

但是,当我在类的任何方法下使用它时Tile, 有用。 IE。

    def __init__(self, x, y, width, height, image):
        .....

    def draw(self):
        hidden_image = pygame.image.load('image0.bmp')
        hidden_image.convert()

有什么解释吗?


你必须跑pygame.init()更确切地说pygame.screen.set_mode()在你跑步之前hidden_image.convert()因为convert()必须知道显示配置 - 即。颜色深度 - 正确转换图像。

因为它是类属性,所以它在加载脚本时开始执行,所以你必须把pygame.init() and pygame.screen.set_mode()在类定义之前。或者你必须使用convert() in __init__.

draw()函数执行后pygame.screen.set_mode()所以它有效。

PyGame 文档:pygame.Surface.convert

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我不能使用 pygame.image.load 作为类属性?它说“如果没有初始化 pygame.display 就无法转换” 的相关文章

随机推荐