2016-07-15 4 views
0

2つのサーフェスを作成し、それらのサーフェスを塗りつぶしてから、もう一方のサーフェスをblitしようとしています。ただし、2番目のサーフェスは最初のサーフェスの上にレンダリングされません。 2番目のサーフェスを表示サーフェスにblitすると、それはうまく描画されます。お互いの上に(ディスプレイ以外の)重ね合わせ面に制限があるかどうかは不明です。私は、更新()とフリップ() PyGame - あるサーフェスを別のサーフェスにblitできません

  • 私はディスプレイ(windowSurface)へのレイヤ2を書き込むと、それだけで正常に動作の両方を使用して試した

    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() 
    
    • :ここに私のコードです。

    ありがとうございます!

  • 答えて

    1

    layer1.blit(layer2, (0,0))の後にwindowSurface.blit(layer1, (0,0))があることです。つまり、layer1が既にウィンドウにブリッティングされた後でレイヤー2をレイヤー1にブリットしていることを意味します。あなたがする必要があるのは、layer1.blit(layer2, (0,0))を切り取り、それを最初に実行するようにABOVE windowSurface.blit(layer1, (0,0))と貼り付けることだけです。

    関連する問題