代码之家  ›  专栏  ›  技术社区  ›  Joel Castro

酸洗包含pygame的词典。曲面对象

  •  0
  • Joel Castro  · 技术社区  · 7 年前

    Images pygame.Surface 物体。我不必每次运行代码时都构建整个字典,我只想从文件中读入它。

    with open('Images.pkl', 'wb') as output:
        pickle.dump(Images, output, pickle.HIGHEST_PROTOCOL)
    
    with open('Images.pkl', 'rb') as input:
        Images = pickle.load(input)
    

    稍后,我使用以下代码:

    class Survivor:
        def __init__(self):
            self.body_image=Images['Characters/Survivor/handgun/idle0']
            self.body_rect=self.body_image.get_rect()
    

    这给了我:

    文件“ZombieSurvival.py”,第1320行,in 初始化
    pygame。错误:显示曲面退出

    2 回复  |  直到 7 年前
        1
  •  2
  •   r0the    7 年前

    pygame.Surface 对象实际上是 SDL_Surface SDL_CreateRGBSurface() SDL库的功能。 pygame.Surface.__init__() .

    pickle documentation

    ()方法通常是

    所以C结构从来没有初始化过,一切都出错了。

        2
  •  1
  •   Joel Castro    7 年前

    我先用pygame的字典修改了字典 pygame.image.tostring() pygame.Surface 在字典中 Images ,转换为字符串,使用 .然后我泡菜 图像 图像 ,我取消勾选它并将其中的每个字符串转换回 使用 pygame.image.fromstring()

    然而 pygame.image.fromstring() pygame表面 pygame表面 在我使用 pyame.image.tostring()

    每次我要打电话的时候 pygame.image.tostring() pygame表面 ,我首先存储 的键(它位于 图像 )它在一个实例中的大小 class 带字段 key size .我将该类的每个实例存储在一个名为 list_of_image_sizes ,并腌制了列表。

    现在,当你使用 pygame.image.fromstring() 函数,您可以这样调用它:

    for data in list_of_image_sizes:
        Images[data.key]=pygame.image.fromstring(Image[data.key], data.size, 'RGBA')   
        #RGBA is my particular argument, you can change it as you wish