Voici un script minimal pour reproduire ceEn pygame blit d'erreur de la cause du sous-sol que le sous-sol est verrouillé
#!/usr/bin/env python
import pygame
screen = pygame.display.set_mode((640, 480))
screen.fill((255, 255, 255))
screen_half = screen.subsurface((0,0, 640/2.0, 480))
print screen.get_locks()
print screen_half.get_locks()
screen_half.blit(screen_half, (0, 0))
la sortie est
()
()
Traceback (most recent call last):
File "./blit_test.py", line 10, in <module>
screen_half.blit(screen_half, (0, 0))
pygame.error: Surfaces must not be locked during blit
Comme vous pouvez le voir tuples avec des serrures pour écran et screen_half sont vides. Il n'y a pas d'erreur si j'utilise écran au lieu de screen_half.
Mais le blit fonctionne en surface. Cela ne fonctionne pas sur les sous-surfaces. Quoi qu'il en soit, j'ai trouvé que pour mes fins, je devrais utiliser screen_half.scroll() – kepkin