2013-12-21 2 views
0

У меня есть программа, в которой я использую элементы управления мышью для перемещения объектов. Когда объекты двигаются, программа сбрасывает экран твердого белого цвета, так что нет никаких следов объекта с помощью:Создание постоянного фона в pygame

screen.fill(255,255,255) 

То, что я пытаюсь сделать теперь есть фон созданного фон, который я сделал в методе ,

black = (0,0,0) 
brown = (218,134,10) 
white = (255,255,255) 
pygame.draw.rect(screen,white,(0,0,1000,600)) 

first =pygame.draw.rect(screen,brown,(150,150,50,400),0) 
second = pygame.draw.rect(screen,brown,(450,150,50,400),0) 
third = pygame.draw.rect(screen,brown,(750,150,50,400),0) 

first_out = pygame.draw.rect(screen,black,(150,150,50,400),2) 
second_out = pygame.draw.rect(screen,black,(450,150,50,400),2) 
third_out= pygame.draw.rect(screen,black,(750,150,50,400),2) 

Как я могу сделать фон фона освежающим при каждом перемещении объекта?

ответ

0

Вместо того, чтобы рисовать непосредственно на поверхности экрана, вы должны создать новую поверхность, назовем ее background_surface.

Поступая таким образом, вы будете иметь только рисовать Фоновый один раз (в самом начале вашего приложения) и любой блиттинг впоследствии будет сделано намного быстрее, так как ни pygame.draw.xxx не делается.

Чтобы заполнить поверхность экрана background_surface, вы просто используете screen.blit().


Быстрый фрагмент:

WIDTH, HEIGHT = 800, 600 
background_surface = pygame.Surface((WIDTH, HEIGHT)) 

# do all the drawings on the background surface 
background_surface.fill((255, 255, 255)) 

while application_running: 
    # processinput 
    # update objects 
    # draw everything 
    screen.blit(background_surface, (0, 0)) 
    pygame.display.update() 
+0

Это просто дает ошибку говоря background_surface не определен – user3029845

+0

Это вызвано 'background_surface' быть вне сферы. Не стоит беспокоиться об исправлении этой ошибки. Код, который я представил, был всего лишь примером. –

Смежные вопросы