如何在pygame中缩放列表中的每张图片?
我真的想不通。每当我尝试时,都会出现一个错误,说我正在转换的项目是 str 或布尔值,我需要一个表面来处理。我知道我正在做的事情是错误的,但尝试并没有受到伤害,我不知道如何处理这个问题。我是一名业余程序员,只需要一点帮助。
相关和最新的代码:
rain_imgs = []
rain_list = ["1.png", "mv.png", "b1.png", "b3.png", "b4.png", "b5.png"]
for img in rain_list:
rain_imgs.append(pg.image.load(path.join(img_folder, img)).convert())
pg.transform.scale(img in rain_list, (60, 60))
错误:
TypeError: argument 1 must be pygame.Surface, not bool
我看到您正在尝试使用
pg.transform.scale(img in rain_list, (60, 60))
以引用您刚刚放入列表中的项目。不幸的是,单独使用时的"in"关键字只是告诉您该项目是否存在于指定的数组中,这就是错误的来源。您可能想要执行的操作如下所示:
for img in rain_list:
img_item = pg.image.load(path.join(img_folder, img)).convert()
pg.transform.scale(img_item, (60, 60))
rain_imgs.append(img_item)
它不必将项目从列表中拉回以更改它,而是创建一个本地对象,更改其特征,然后存储它,而不会弹出布尔错误。
====编辑===
由于它现在附加了原始图像,这告诉我
pg.transform.scale(img_item, (60, 60))
可能返回一个新对象,而不是对提供的对象运行更改。我会尝试这样的事情:
for img in rain_list:
img_item = pg.image.load(path.join(img_folder, img)).convert()
rain_imgs.append(pg.transform.scale(img_item, (60, 60)))
看看这是否有效。