2014-08-30 4 views
0

Я пытаюсь установить фоновое изображение для своей игры, и мне нужно это при определенной непрозрачности. Я использовал метод set_alpha() поверхности для контроля его прозрачности. Тем не менее, это создает эффект затухания с начальным фоном при заданной непрозрачности, которая в конечном итоге становится полной. Есть ли способ установить прозрачность фона на постоянное значение?Установите постоянную полупрозрачность для фона

Мой код

self.bg = pygame.image.load("../game_images/background.png") 
self.bg_size = self.bg.get_size() 
self.bg_rect = self.bg.get_rect() 
self.bg.set_alpha(5) 
self.screen = pygame.display.set_mode(self.bg_size,pygame.FULLSCREEN) 
self.screen.blit(self.bg, self.bg_rect) 
pygame.display.update() 

Любые намеки о том, как это сделать?

+0

Это не должно создавать эффект затухания. Можете ли вы предоставить отдельный пример? – sinan

+0

@sinan Вы были верны. Это не создает такого эффекта. Но кусок кода, который я написал, был в функции, которая вызывается в цикле, который был причиной проблемы. Раньше я этого не знал. Большое вам спасибо :) – BrownBeast

ответ

0

Это поможет увидеть игровой цикл.

Ваше изображение, вероятно, становится ярким, потому что вы не очищаете экран перед его перерисованием.

screen.fill((0,0,0)) 
screen.blit(self.bg, self.bg_rect) 
pygame.display.update() 

, если вы решите сделать self.bg.convert_alpha(). Затем вам нужно использовать pygame.surfarray.pixels_alpha(), и для этого требуется numpy для установки.

# value is a float .01 to .99 
def set_alpha(image, value): 
    array = pygame.surfarray.pixels_alpha(image) 
    for x in xrange(array.shape[0]): 
     for y in xrange(array.shape[1]): 
      array[x][y] = int(array[x][y] * value) 
+0

Ваше решение по очистке экрана до перерисовывания работает! Но у меня теперь есть связанная проблема. Если я каждый раз очищаю экран, передний план также становится пустым, и он выглядит так, как будто он немного мигает. Как я могу это исправить? – BrownBeast

+0

Ничего, получилось. Просто удалите этот фрагмент кода из цикла – BrownBeast

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