You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pygame淡入淡出函数异常:淡入正常但淡出失效求助

问题分析与解决

你的淡入淡出函数里,淡出部分失效的核心原因是:淡出阶段没有先重绘底层游戏画面,直接在已全黑的屏幕上降低黑色表面的透明度,自然看不到内容恢复。

修复逻辑

  1. 无论淡入还是淡出,每次绘制半透明黑色层前,都要先刷新当前游戏场景(比如调用你的游戏主绘制函数)
  2. 拆分逻辑或调整循环顺序,确保淡出时底层画面先被渲染

修正后的代码示例

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 17:25:19