Pygame - 在精灵中加载图像

2023-11-21

如何将图像加载到精灵中而不是为精灵绘制形状? 例如:我将 50x50 图像加载到精灵中,而不是绘制 50x50 矩形

这是到目前为止我的精灵代码:

class Player(pygame.sprite.Sprite):

    def __init__(self, color, width, height):

        super().__init__()
        #Config
        self.image = pygame.Surface([width, height])
        self.image.fill(WHITE)
        self.image.set_colorkey(WHITE)

            # Draw
        pygame.draw.rect(self.image, color , [0, 0, width, height])

        # Fetch
        self.rect = self.image.get_rect()

    def right(self, pixels):
        self.rect.x += pixels
    def left(self, pixels):
        self.rect.x -= pixels
    def up(self, pixels):
        self.rect.y -= pixels
    def down(self, pixels):
        self.rect.y += pixels

First load全局范围或单独模块中的图像并将其导入。不要将其加载到__init__方法,否则每次创建实例时都要从硬盘读取,速度很慢。

现在您可以分配全局IMAGE在课堂里 (self.image = IMAGE)并且所有实例都将引用该图像。

import pygame as pg


pg.init()
# The screen/display has to be initialized before you can load an image.
screen = pg.display.set_mode((640, 480))

IMAGE = pg.image.load('an_image.png').convert_alpha()


class Player(pg.sprite.Sprite):

    def __init__(self, pos):
        super().__init__()
        self.image = IMAGE
        self.rect = self.image.get_rect(center=pos)

如果你想对同一个类使用不同的图像,你可以在实例化过程中传递它们:

class Player(pg.sprite.Sprite):

    def __init__(self, pos, image):
        super().__init__()
        self.image = image
        self.rect = self.image.get_rect(center=pos)


player1 = Player((100, 300), IMAGE1)
player2 = Player((300, 300), IMAGE2)

Use the convert or convert_alpha(对于具有透明度的图像)提高位块传输性能的方法。


如果图像位于子目录中(例如“images”),则使用以下命令构建路径os.path.join:

import os.path
import pygame as pg

IMAGE = pg.image.load(os.path.join('images', 'an_image.png')).convert_alpha()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pygame - 在精灵中加载图像 的相关文章

随机推荐

  • python - setup.py sdist bdist_wheel

    我决定创建一个名为 NsmPY 的小模块 一旦我完成了模块背后的代码 可在 GitHub 上找到 我就开始尝试将这个新模块上传到 PyPi 但是 当我运行必要的命令时python3 setup py sdist bdist wheel 程序
  • 无效更新:节中的行数无效

    我正在使用一个项目Microsoft Azure services 在删除行时我收到此错误 Terminating app due to uncaught exception NSInternalInconsistencyException
  • 如何触发MathJax?

    包括我MathJax与脚本 这会自动用格式化标签替换所有数学代码 我怎样才能触发MathJax仅通过 JavaScript 单击 而不是在加载时单击 我怎么知道MathJax将格式化的元素放在页面末尾而不是替换原始代码 1 如何仅通过 ja
  • 为什么 。 PHP $_GET 数组中的 (点) 和空格更改为 _ (下划线)? [关闭]

    Closed 这个问题是无关 目前不接受答案 In PHP 文档我发现以下部分 变量名中的点和空格将转换为下划线 例如
  • 谁是 GWLP_USERDATA 单元的所有者?

    众所周知GWLP USERDATA可用于将一些指针大小数据与指定窗口相关联 但谁有权利这样做呢 显然 如果两段代码独立执行此操作 其中一段代码会覆盖另一段代码 那么必须只有一个所有者 但必须明确确定一个一般规则 谁是所有者GWLP USER
  • 指向链表的指针什么时候会改变实际的链表?

    我有一个单链表 L 并创建一个指向该列表 P 的指针 似乎有时修改 P 会更改实际列表 而其他时候修改 P 对实际列表 L 没有任何作用 只会更改 P 所指向的内容到 假设我创建一个指向 L 的指针 P L 在 python 中 执行类似
  • ASP.NET MVC3 中的随机会话超时

    我有一个获得随机会话超时的应用程序 Windows 2008 R2 上的 IIS 7 5 NET 4 0 我尝试了以下方法 检查应用程序日志是否 w3wp exe 进程崩溃 但没有条目 在应用程序池中禁用快速失败保护 移至 sql serv
  • Objective-C 只读属性是否需要指定强或复制?

    如果我有一个只读字符串属性 是否需要指定strong or retain or copy在声明中 如果我不指定 是否假定其中之一 在我看来 所有权属性只有当你有 setter 时才有用 property nonatomic readonly
  • 根据位置(IP 地址)将用户重定向到不同的网站

    如何使用 IP 地址将访问我的网站的用户重定向到特定位置的网站 我有 3 个特定位置的网站 1 欧洲 2 美国 3 亚洲 简而言之 我想使用客户端的 IP 地址找到客户端的位置 该解决方案需要使用Google API 我得到了使用解决方案
  • 如何使用纯 CSS 将 width:auto DIV 的宽度增加 X 像素

    我有一个DIV 即设置为向左飘浮 有它的width set to auto因为我希望它和它的内容一样宽 On hover 我想增加width of the DIV比如说 20 像素 设置固定值时width in the hoverCSS 类
  • 在 facebook 上使用 opengraph 嵌入 html5 视频

    我为我们的学生电视台建立了一个网站 其概念与 youtube 非常相似 我们希望我们的视频在分享时可以直接在 Facebook 中播放 视频本身仍然托管在我们的服务器上 并且我们的统计数据会更新 网站上的播放器使用 videojs 并且全部
  • HTML5数据属性排序

    我想对具有为评级和日期定义的数据属性的 DOM 元素进行排序 用 jQuery 在前端实现排序的最佳方式是什么 示例代码可见 http jsfiddle net gercheq zhqXd 这是使用表格实现的所需功能 http tables
  • 当 Composer 连接到 GitHub 时,我收到有关弃用身份验证方法的警告。我应该使用什么身份验证配置?

    GitHub 已开始发送有关已弃用的身份验证的电子邮件 但我尚未找到详细说明作曲家的资源auth json应该看起来像在新政权下 我的要求相对简单 使用 Composer 更新开发中的 Symfony 应用程序 并偶尔尝试其他存储库 有了这
  • 使用 Retrofit 和 RxJava 下载并写入文件

    我正在下载一个带改造的pdf文件 我下载它的方式是按块 我用Content Rangeheader 来获取一系列字节 然后我需要将这些字节写入file问题是编写它们的顺序 我正在使用flatMap 函数为下载文件必须完成的每个请求返回一个可
  • 将查询结果存储在变量中

    我有一个查询 我想将其结果存储在变量中 我该怎么做 我试过 hive e use telecom insert overwrite local directory tmp result select avg a from abc hive
  • 将无功值传递给条件面板条件

    我在这里发现了一个类似的案例 没有具体的答案 闪亮 将reactiveValues传递给conditionalPanel但这给了我一个想法 我需要设置变量session sendCustomMessage在 server R 中 然后使用S
  • Python创建长文件时出现IOError异常

    当尝试使用 open fname w 打开新文件时 出现如下所示的 IOError 完整的错误消息如下 该文件不存在 但我使用 os access dir name os W OK 和 os path exists dir name 验证该
  • 在 .htaccess 中一起使用 mod_rewrite 和 mod_alias(重定向 301)?

    我有一个网站 其中包含一组已放入 CMS 的旧 html 和 php 页面 目前在 htaccess 文件中大约有 30 个 mod alias 重定向 其形式如下 redirect 301 oldpage1 html http www e
  • 如何使用 TFS 集成平台(TFS2012 到 TFS2012)将团队项目从一个集合复制到另一个集合

    我已从 CodePlex 下载了最新的 TFS 集成平台 并尝试在现有团队项目之间 单向 迁移MyProject in CollectionA左边是一个空的团队项目MyProject in CollectionB右侧使用提供的 源代码控制和
  • Pygame - 在精灵中加载图像

    如何将图像加载到精灵中而不是为精灵绘制形状 例如 我将 50x50 图像加载到精灵中 而不是绘制 50x50 矩形 这是到目前为止我的精灵代码 class Player pygame sprite Sprite def init self