最近尝试使用pygame并遇到了alpha不透明度。如何调整alpha范围以使我的图像/表面每秒闪烁两次?
目前我以每秒30帧的速度绘制它。
def blit_image(self):
for alpha in range(0,255,50):
for i in self.image_array:
a = i.set_alpha(alpha)
i.draw_on(self.screen)
pygame.display.flip()
这里的东西不对,它只是让我的图像的边框不透明,我无法看到眨眼是否真的发生了。有关如何做到这一点的想法吗?
答案 0 :(得分:1)
简要说明:(您的代码)您每秒有30帧(30FPS),因此每帧减少alpha +1/15 * 255
,15帧后增加alpha -1/15 * 255
,15帧后再次减少等等。
这是如何闪烁背景颜色的完整示例(这是SO上的类似问题的答案)。 你所做的并非如此,但也许它可以帮到你。
import pygame
#----------------------------------------------------------------------
class Background():
def __init__(self, screen):
self.screen = screen
self.timer = 0
self.color = 0
self.up = True # up or down
#-------------------
def change(self):
if self.timer == 15: # 15 frames for UP and 15 frames for DOWN
self.timer = 0
self.up = not self.up
self.timer += 1
if self.up:
self.color += 10
else:
self.color -= 10
print self.up, self.color
#-------------------
def draw(self):
self.screen.fill( (self.color, self.color, self.color) )
#----------------------------------------------------------------------
class Game():
def __init__(self):
pygame.init()
self.screen = pygame.display.set_mode((800,600))
self.background = Background(self.screen)
#-------------------
def run(self):
clock = pygame.time.Clock()
RUNNING = True
while RUNNING:
# ----- events -----
for event in pygame.event.get():
if event.type == pygame.QUIT:
RUNNING = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
RUNNING = False
# ----- changes -----
self.background.change()
# ----- draws ------
self.background.draw()
pygame.display.update()
# ----- FPS -----
clock.tick(30)
#-------------------
pygame.quit()
#----------------------------------------------------------------------
Game().run()