我正在尝试在一段时间内使当前正在制作的游戏的表面褪色。这是我第一次在surface.fill()
方法中使用alpha值,在阅读了文档之后,我认为它会非常简单。但是,我不断收到错误消息:pygame.error
这本身是相当模糊的,我实际上不知道出了什么问题。因此,有人能够提出我正在使用的方法的替代方案,还是简单地说明如何正确使用surface.fill()
?
这是我编写的一些代码示例,以演示我希望实现的目标。
import pygame
pygame.init()
SCREEN = pygame.display.set_mode((300, 300))
fade = 0
while True:
SCREEN.fill((0, 0, 0))
SCREEN.fill((250, 248, 239, fade), None, pygame.SRCALPHA)
fade += 1
pygame.display.update()
答案 0 :(得分:1)
SRCALPHA
对special_flags
无效。看一下docs。
SRCALPHA
仅在创建曲面时使用(因为它通常是只读标志)。
您的代码应如下所示:
import pygame
pygame.init()
SCREEN = pygame.display.set_mode((300, 300))
surf = pygame.Surface((300, 300), pygame.SRCALPHA)
fade = 0
while True:
if pygame.event.get(pygame.QUIT): break
pygame.event.pump()
SCREEN.fill((0, 0, 0))
surf.fill((250, 248, 239, fade))
SCREEN.blit(surf, (0, 0))
if fade < 255:
fade += 1
pygame.display.update()
不要尝试用RGBA颜色填充屏幕表面。请使用带有Surface
标志的SRCALPHA
。
请注意,fade
不得大于255。否则,您将获得无效的color参数异常。