如何缩放 pygame 列表中的每张图片?
我实在想不通。每当我尝试时,都会出现错误,表明我正在transform.scaling的项目是str或bool,并且我需要一个表面来使用。我知道我所做的事情是错误的,但尝试并没有什么坏处,而且我不知道如何解决这个问题。我是一名业余编码员,只需要一点帮助。
相关且最新的代码:
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)))
看看是否有效。
这是我一直在使用的:
scaled_rain_list = []
for img in rain_list:
scaled_rain_list.append(pygame.transform.scale(img,(60,60)))
这将创建一个名为“scaled_rain_list”的新列表,其中存储所有放大的图像。