2
我添加變量(pygame的表面)到像這樣的列表,用來設置在整理我的遊戲呈現表層:python:保持同步到原始字典嗎?
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
中的內容繪製到屏幕的表面根本不會改變,並且在更改後比較兩個表示它們不再相等,它們是在改變之前。
如果它的事項,這就是我如何編輯面:
# 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)
我認爲蟒蛇其實並沒有表面複製,而只是把對它的引用到我的名單,我錯了在這麼想?複製另一個表面(它是基於哪個表面)將其拋棄?
我該如何做到這一點,我可以編輯self.alphaFadeLayer
並將這些更改反映在列表中的副本中?
是啊,這工作就好了。猜猜我只需清空表面,然後將原件抹上即可從現在開始重置,謝謝!我想我明白爲什麼老人不工作。 – leod