PyGame - 无法将一个表面插入另一个表面

时间:2016-07-15 17:16:55

标签: python pygame

我只是想创建两个Surfaces,填充它们然后将它们一个blit到另一个。但是,第二个Surface永远不会在第一个表面上呈现。如果我将第二个表面blit到显示器Surface上,它会渲染得很好。不确定是否对彼此叠加的表面(除显示之外)进行分层限制。这是我的代码:

import pygame, sys
from pygame.locals import *

pygame.init()

windowSurface = pygame.display.set_mode((500, 400), 0, 32)
pygame.display.set_caption('Hello world!')
windowSurface.fill((255,255,255))

layer1 = pygame.Surface((100,100))
layer1.fill((0,255,0))

layer2 = pygame.Surface((50,50))
layer2.fill((255, 0, 0))

windowSurface.blit(layer1, (0,0))
layer1.blit(layer2, (0,0))

pygame.display.flip()

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
  • 我尝试过使用update()和flip()
  • 当我将layer2写入显示(windowSurface)时,它可以正常工作。

感谢您的任何建议!

1 个答案:

答案 0 :(得分:1)

你的问题是你在layer1.blit(layer2, (0,0))之后有windowSurface.blit(layer1, (0,0))这意味着你在第1层已经完成对窗口的blitting之后将第2层blint到第1层。您需要做的就是剪切layer1.blit(layer2, (0,0))并将其粘贴到windowSurface.blit(layer1, (0,0))以上,以便首先执行。