2015-04-08 3 views
1

Я пытаюсь потушить текст на экране, используя функцию set_alpha с новой поверхностью.Невозможно вывести текст - PyGame

Я могу исчезнуть в тексте, однако при использовании этого кода:

label = myFont.render(textToFadeOut,1,(255,0,0)) 
newSurf = pygame.Surface(myFont.size(textToFadeOut)) 
newSurf.blit(label,(0,0)) 
for x in range (225): 
    newSurf.set_alpha(225 - x) 
    screen.blit(newSurf, (100,100)) 
    pygame.display.flip() 
    pygame.time.delay(20) 

Чтобы выцветает из текст не меняется.

Вышеупомянутый код - это, по сути, тот же самый код, который использовался для затухания (который работает), единственное отличие состоит в том, что я использую (225 - x) вместо просто x, чтобы гарантировать, что значение становится постепенно ниже.

Я проверил, что x не используется нигде, а также распечатывает (225 - x) каждый цикл, и значение становится ниже.

ответ

2

Вы не очищаете рамку перед тем, как нанести новую поверхность. Попробуйте заполнить цветом фона, а затем снова blitting текст.

for x in range(225): 
    screen.fill((0,0,0)) #or whatever your background color is 
    newSurf.set_alpha(225-x) 
    screen.blit(newSurf, (100,100)) 
    pygame.display.flip() 
    pygame.time.delay(20) 

Подумайте об этом, он работает с замиранием в потому, что текст становится все темнее и темнее, но он не работает с замиранием, потому что вы блиттингом на верхней части старого текста.

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