使用填充逐渐淡化表面

时间:2018-07-23 11:39:11

标签: python python-3.x pygame alpha fill

我正在尝试在一段时间内使当前正在制作的游戏的表面褪色。这是我第一次在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()

1 个答案:

答案 0 :(得分:1)

SRCALPHAspecial_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参数异常。