Pygame set_alpha 不适用于尝试的背景淡入淡出

2023-12-08

我一直在尝试创建一个简短的代码,用于可以淡入和从黑色淡出的项目,但由于某种原因,只有淡入功能在工作,而淡出功能或多或少被跳过。通过给他们参数,我确认问题出在第二个函数中,并且透明度根本没有改变。这是我的代码-

import pygame
screen = pygame.display.set_mode((800,600))
image = pygame.image.load_extended('Map.png').convert_alpha()
image = pygame.transform.scale(image,(530,300))
image.set_alpha(0)
x = 0
y = 255
def fade_in(x):
  while True:
    screen.blit(image,(0,0))
    pygame.display.update()
    image.set_alpha(x)
    pygame.time.delay(100)
    if x < 255:
      x += 5
    else:
      pygame.time.delay(500)
      x = 0
      fade_out(y)
def fade_out(y):
  while True:
    screen.blit(image,(0,0))
    pygame.display.update()
    image.set_alpha(y)
    pygame.time.delay(100)
    if y > 0:
      y -= 5
    else:
      pygame.time.delay(500)
      y = 255
      fade_in(x)
while True:
  fade_in(x)

有谁知道问题可能是什么?


当您在屏幕上绘制透明表面时,该表面会与屏幕的当前内容混合。因此,您需要在绘制褪色背景之前清除屏幕screen.fill(0).


不要尝试以递归方式或在应用程序循环内使用循环来控制应用程序。不要delay游戏。delay导致游戏停止响应。

使用应用程序循环并使用pygame.time.Clock控制每秒帧数,从而控制游戏速度。

方法tick() of a pygame.time.Clock对象,以这种方式延迟游戏,即循环的每次迭代都消耗相同的时间段。看pygame.time.Clock.tick():

该方法应该每帧调用一次。

这意味着循环:

clock = pygame.time.Clock()
run = True
while run:
   clock.tick(60)

Example:

import pygame

pygame.init()
screen = pygame.display.set_mode((400,300))
clock = pygame.time.Clock()

try:
    image = pygame.image.load_extended('Map.png').convert_alpha()
    image = pygame.transform.scale(image,(530,300))
except:
    image = pygame.Surface(screen.get_size())
    pygame.draw.circle(image, (255, 0, 0), screen.get_rect().center, min(*screen.get_size()) // 2 - 20)

alpha = 0
alpha_change = 1

run = True
while run:
    clock.tick(60)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False          

    alpha += alpha_change
    if not 0 <= alpha <= 255:
        alpha_change *= -1
    alpha = max(0, min(alpha, 255))   

    screen.fill(0)

    alpha_image = image.copy()
    alpha_image.set_alpha(alpha)    
    screen.blit(alpha_image, (0, 0))
    
    pygame.display.flip()

pygame.quit()
exit()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pygame set_alpha 不适用于尝试的背景淡入淡出 的相关文章

随机推荐

  • 量角器 - 无法读取未定义的属性“$$testability”

    我收到一条错误 内容如下 Error while waiting for Protractor to synce with the page Cannot read property testability of undefined 下面是
  • Scala - 用特定文本替换 xml 元素

    所以我有这个XML a blah a 我想把它改成 a someValueIDoNotKnowAtCompileTime a 目前 我正在看这个问题 然而 这只是将值更改为 2 我想要的是完全相同的东西 但是能够定义值 以便它可以在运行时更
  • 从主机名获取域名扩展

    Extract 域名扩展 e g com 不是使用正则表达式从主机名中获取的域名 例如 google com 输入 gt 输出 www google com gt com google com gt com google co uk gt
  • 在 AWS AppSync 中对 SQL 查询的 JSON 对象进行字符串化

    Question 如何在 Appsync 速度模板中对 SQL 语句的 JSON 对象进行字符串化 解释 我有一个 Aurora RDS 表 其中有一列数据类型为 JSON AppSync API 已连接到 RDS 我的 GraphQL 模
  • 将一个数据表的列添加到另一个数据表

    嘿 所有人都需要一点帮助来排序这个表的循环 似乎无法将工作示例应用于模型 无论如何 它就在这里 我有 2 个数据表 每个数据表都有不同的数据和不同的值 唯一的共同值是日期 第一个表包含我想要的所有内容 除了一列值 来自另一个表 因此我需要将
  • 在现有 geom_sf 图层下方插入 geom_sf 图层

    我有一张印度的基本地图 其中包含州和边界 一些标签以及存储为 gg 对象的许多其他规范 我想生成许多带有区域图层的地图 这些地图将承载来自不同变量的数据 为了防止地区地图覆盖州和国家边界 它必须位于之前所有代码之前 我想避免重复 我想我可以
  • 法律散文使用 Corda

    这是之前回答的后续问题法律散文乔尔提出的问题 根据要求创建了单独的问题 LegalProseReference uri foo bar com my legal doc html public class MyContract implem
  • 在 PHP 中,为什么我的会话变量保留为引用?

    这是代码 通过验证 IP 地址来检查会话 ID 是否被欺骗是一个简单的操作 session start session ip address SERVER REMOTE ADDR if isset SESSION SESSION IP AD
  • 如何更新表中的行或插入不存在的行?

    我有以下计数器表 CREATE TABLE cache key text PRIMARY KEY generation int 我想增加其中一个计数器 或者如果相应的行尚不存在 则将其设置为零 有没有办法在标准 SQL 中没有并发问题的情况
  • 标签内的按钮触发(有时是双触发\双击)

    有类似的问题 但我没有足够的声誉来发布答案 所以我将其作为 新问题 问题是
  • dll 的 app.config 中的连接字符串

    我创建了一个 C dll 它使用来自的连接字符串应用程序配置文件连接到数据库 我在 Web 应用程序 Visual Studio 2013 Windows 7 中使用它 该应用程序也连接到数据库并在其中有自己的连接字符串网络配置文件 但是
  • WPF透明边框导致UI停止重绘

    作为后续我之前的问题 我想知道如何正确使用透明窗 如果我将窗口设置为使用透明度 UI 有时会出现停止响应的情况 实际发生的情况是 UI 根本没有按其应有的方式更新 不出现动画 页面似乎无法导航 然而 如果你观察调试器点击按钮 链接等 确实有
  • 你能强制将枚举值序列化为整数吗? [复制]

    这个问题在这里已经有答案了 可能的重复 如何将枚举值序列化为 int Hi all 我想知道是否有一种方法可以强制将枚举值序列化为其整数值 而不是其字符串表示形式 让您了解一下上下文 在严重依赖 Web 服务的 Web 应用程序中 我们为所
  • 不能子类化 UIColor 吗?

    我正在尝试对 UIColor 进行子类化 但我似乎无法弄清楚出了什么问题 在我的 PColor h 中 import
  • 为什么“隔空敲击”手势在我的 Unity/MRTK 应用程序中的 HoloLens1 上不起作用?

    我有一个 Unity 应用程序 我想将其与 Microsoft 混合现实工具包 MRTK 集成 当我将 MRTK v2 1 或 v2 2 包添加到 Unity 项目时 我可以在 Unity 编辑器中模拟 隔空敲击 手势 并且应用程序会注册该
  • 新信号连接到旧插槽而不是单独的插槽

    我正在尝试标记数据跟踪的 x 跨度 并使用 tagNames 起始 x 值和结束 x 值填充表 我正在使用 突出显示 对象的字典来跟踪 x 跨度 以防以后需要对其进行编辑 增加或减少 字典将 x 起始值映射到突出显示对象 因为 x 起始值应
  • 从 Bigquery 中的时间戳提取日期:一种更好的方法

    向 Bigquery 专家提出一个简短的问题 以下是使用标准 SQL 从 Bigquery 中的时间戳中提取日期的两种方法 standardSQL 1 DATE TIMESTAMP MILLIS CAST timestamp AS INT6
  • 当我需要引用自身时如何设计结构[重复]

    这个问题在这里已经有答案了 My 上一个问题告诉我 Rust 不能在结构中引用自身 所以我的问题是 当我需要引用自身时如何设计一个结构体 我们可以以这个结构体为例 struct SplitByChars lt a gt seperator
  • 当用户按下设备音量键时,搜索栏拇指位置发生变化

    我使用搜索栏来控制设备的音量 我只需在触摸板上拖动搜索栏的拇指即可更改设备的音量 但是当用户按下音量 侧面 键时 我需要相应地设置搜索栏拇指位置 我该怎么做 请告诉我 Thanks 我通过重写 onkeydown 事件得到了解决方案 Ove
  • Pygame set_alpha 不适用于尝试的背景淡入淡出

    我一直在尝试创建一个简短的代码 用于可以淡入和从黑色淡出的项目 但由于某种原因 只有淡入功能在工作 而淡出功能或多或少被跳过 通过给他们参数 我确认问题出在第二个函数中 并且透明度根本没有改变 这是我的代码 import pygame sc