Pygame淡入淡出函数异常:淡入正常但淡出失效求助
问题分析与解决
你的淡入淡出函数里,淡出部分失效的核心原因是:淡出阶段没有先重绘底层游戏画面,直接在已全黑的屏幕上降低黑色表面的透明度,自然看不到内容恢复。
修复逻辑
- 无论淡入还是淡出,每次绘制半透明黑色层前,都要先刷新当前游戏场景(比如调用你的游戏主绘制函数)
- 拆分逻辑或调整循环顺序,确保淡出时底层画面先被渲染
修正后的代码示例
def fade_in(): fade_surf = pg.Surface((WIDTH, HEIGHT)) fade_surf.fill((0, 0, 0)) opacity = 0 for _ in range(100): opacity += 1 fade_surf.set_alpha(opacity) # 先绘制当前游戏画面(替换成你实际的游戏绘制函数,比如draw_scene()) # draw_scene() WINDOW.blit(fade_surf, (0, 0)) pg.display.update() pg.time.delay(10) def fade_out(): fade_surf = pg.Surface((WIDTH, HEIGHT)) fade_surf.fill((0, 0, 0)) opacity = 100 for _ in range(100): opacity -= 1 fade_surf.set_alpha(opacity) # 同样先绘制游戏画面,再叠加半透明黑层 # draw_scene() WINDOW.blit(fade_surf, (0, 0)) pg.display.update() pg.time.delay(10)
关键说明
原代码中,淡入结束后屏幕已被全黑层覆盖,淡出时只是在全黑基础上降低黑层透明度,结果还是黑色。必须先渲染游戏画面,再叠加半透明黑层,才能让淡出过程呈现“黑色逐渐消失、游戏画面显现”的效果。如果不想拆分函数,也可以在原函数的第二个循环前,先调用一次游戏绘制函数再执行淡出逻辑。
内容的提问来源于stack exchange,提问作者LStep
相关产品推荐
相关产品推荐

