使用填充逐渐淡出表面
Gradually fading a surface using 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()
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 颜色填充屏幕表面。请改用带有 SRCALPHA
标志的 Surface
。
请注意,fade
永远不应大于 255。否则,您将得到一个无效的颜色参数异常。
我正在尝试为我目前正在制作的游戏在一段时间内淡化表面。这是我第一次在 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()
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 颜色填充屏幕表面。请改用带有 SRCALPHA
标志的 Surface
。
请注意,fade
永远不应大于 255。否则,您将得到一个无效的颜色参数异常。