需要帮助在 PyGame 中使用 for 循环加载图像

Need help loading images using a for loop in PyGame

我正在尝试根据一个值在 PyGame 中加载图像,例如当值为 6 时它会将图像设置为图像编号 6。

def bar():
    global ink
    global screen
    global barImg
    ink = 0
    for ink in range(0,100):
        barImg = pygame.image.load(f'inkbar\load{ink}.png')
        screen.blit(barImg,(100,100))
        pygame.display.update()

墨水的值在另一个函数中发生了变化,我知道那部分是有效的。每个图像都被称为 load0.png、load1.png 等等,直到 100,但图像从未出现在屏幕上。我已经通过注释掉 for 循环并将 barImg 设置为特定图像来测试将图像显示在屏幕上,它确实将图像显示在屏幕上。

        px, py = pygame.mouse.get_pos()
        if pygame.mouse.get_pressed() == (1,0,0):
            pygame.draw.rect(screen, (255,255,255), (px,py,10,10))
            
            ink+=0.5
            math.ceil(ink)
            print(ink)

这是允许用户绘图的功能的一部分。这部分检测鼠标点击并增加墨水的值。我尝试在墨水增加下调用 bar(),但这降低了绘制速度。

我删除了函数 bar()

            ink+=1
            math.ceil(ink)
            print(ink)
            for ink in range(1,100):
                barImg = pygame.image.load(f'inkbar\load{ink}.png')
                screen.blit(barImg,(100,100))

这是我用过的替代品,但是现在墨水不增加一个,它立即从 1 到 100,导致大量延迟。

也许名称中带有“加载”的图像有问题?

我有一些代码用于 运行 通过我知道有效的动画帧

代码:

frame_index += animation_speed
if frame_index >= len(animation):
  self.frame_index = 0
image = pygame.image.load(f'Ink ({int(frame_index)}).png')
screen.blit(image, (0,0))
pygame.display.update()

基本上你想要两个变量,一个帧索引和一个动画速度。索引是您要加载的第一张图片的编号。在这种情况下,Ink 0.png 或任何名称。所以你的帧索引将为 0。这将增加你的动画速度变量。这个值越高,你的动画就会越快。越低,越慢。循环后它会返回到 0 如果这就是你想要的。如果你不想那样,那么你可以简单地删除 if 语句。

执行此操作后还要检查你是否没有填满屏幕,因为你想看的任何内容都会立即被覆盖。让我知道这是否有效。