python:保持dict中的条目与原始文件一致吗?

时间:2016-01-20 18:53:04

标签: python pygame

我将变量(pygame表面)添加到这样的列表中,用于设置我的游戏呈现表面图层的顺序:

self.gameLayers = {
    0: [self.backDrop]
}

def add_layer(self, surface, priority):
    self.gameLayers.setdefault(priority, []).append(surface)

add_layer(self.alphaFadeLayer, 1)

基本上,它被添加到字典中的列表中,self.alphaFadeLayer现在位于self.gameLayers[1][0],这很好。但现在,如果我对self.alphaFadeLayer进行更改,则使用self.gameLayers中的内容绘制到屏幕的表面根本不会发生变化,并且在更改之后比较两者确实表明它们不是&# 39; t等于他们在改变之前的等于 如果重要,这就是我编辑表面的方式:

# Reset the layer and make it slightly more transparent than before
self.fadeAlpha = max(0, self.fadeAlpha - 1)
self.alphaFadeLayer = self.fadeLayer.copy()
self.alphaFadeLayer.fill((255, 255, 255, self.fadeAlpha), None, pygame.BLEND_RGBA_MULT)

我认为python实际上并没有复制表面,只是简单地将它引用到我的列表中,我认为错了吗?复制另一个表面(它是基于它开始的)是否会将其抛弃? 我如何实现它,我可以编辑self.alphaFadeLayer并将这些更改反映在列表中的副本中?

1 个答案:

答案 0 :(得分:0)

使用

alphaFadeLayer = ...

您指定alphaFadeLayer对新曲面的引用,现在alphaFadeLayer引用不同的曲面,然后self.gameLayers[1][0]

可能你应该做

alphaFadeLayer.blit( self.fadeLayer )