如何将表面(图像)转换为 pygame 中的另一个表面?
How do I convert a surface(image) into another surface in pygame?
如何在不使用 sprite class 的情况下将 pygame 中的一个图像转换为另一个图像?还有,我把之前的图片转换成另一张图片后,如何删除它?
将一幅图像转换为另一幅图像就像重新分配变量一样简单
firstImage = pygame.image.load("firstImage.png")
secondImage = pygame.image.load("secondImage.png")
firstImage = secondImage
del secondImage
我不确定您所说的删除图像到底是什么意思。您可以使用 "del secondImage" 删除代码中的引用并将其发送到垃圾回收。一旦清除屏幕并 blit 更新的图像,应该不再有任何过时图像的迹象。
我今天写了一个小程序,展示了我如何切换对象图像(它可能 help/answer 你的问题)。它对大部分代码的使用都有注释,因此更容易理解它的工作原理和原因(据我所知,任何人昨天都可以开始编程)。
无论如何,这是代码:
import pygame, sys
#initializes pygame
pygame.init()
#sets pygame display width and height
screen = pygame.display.set_mode((600, 600))
#loads images
background = pygame.image.load("background.png").convert_alpha()
firstImage = pygame.image.load("firstImage.png").convert_alpha()
secondImage = pygame.image.load("secondImage.png").convert_alpha()
#object
class Player:
def __init__(self):
#add images to the object
self.image1 = firstImage
self.image2 = secondImage
#instance of Player
p = Player()
#variable for the image switch
image = 1
#x and y coords for the images
x = 150
y = 150
#main program loop
while True:
#places background
screen.blit(background, (0, 0))
#places the image selected
if image == 1:
screen.blit(p.image1, (x, y))
elif image == 2:
screen.blit(p.image2, (x, y))
#checks if you do something
for event in pygame.event.get():
#checks if that something you do is press a button
if event.type == pygame.KEYDOWN:
#quits program when escape key pressed
if event.key == pygame.K_ESCAPE:
sys.exit()
#checks if down arrow pressed
if event.key == pygame.K_DOWN:
#checks which image is active
if image == 1:
#switches to image not active
image = 2
elif image == 2:
image = 1
#updates the screen
pygame.display.update()
我不确定你的代码是如何设置的,或者这是否是你需要的(我也不完全理解 classes 所以它可能是一个精灵 class),但是希望对您有所帮助!
如何在不使用 sprite class 的情况下将 pygame 中的一个图像转换为另一个图像?还有,我把之前的图片转换成另一张图片后,如何删除它?
将一幅图像转换为另一幅图像就像重新分配变量一样简单
firstImage = pygame.image.load("firstImage.png")
secondImage = pygame.image.load("secondImage.png")
firstImage = secondImage
del secondImage
我不确定您所说的删除图像到底是什么意思。您可以使用 "del secondImage" 删除代码中的引用并将其发送到垃圾回收。一旦清除屏幕并 blit 更新的图像,应该不再有任何过时图像的迹象。
我今天写了一个小程序,展示了我如何切换对象图像(它可能 help/answer 你的问题)。它对大部分代码的使用都有注释,因此更容易理解它的工作原理和原因(据我所知,任何人昨天都可以开始编程)。
无论如何,这是代码:
import pygame, sys
#initializes pygame
pygame.init()
#sets pygame display width and height
screen = pygame.display.set_mode((600, 600))
#loads images
background = pygame.image.load("background.png").convert_alpha()
firstImage = pygame.image.load("firstImage.png").convert_alpha()
secondImage = pygame.image.load("secondImage.png").convert_alpha()
#object
class Player:
def __init__(self):
#add images to the object
self.image1 = firstImage
self.image2 = secondImage
#instance of Player
p = Player()
#variable for the image switch
image = 1
#x and y coords for the images
x = 150
y = 150
#main program loop
while True:
#places background
screen.blit(background, (0, 0))
#places the image selected
if image == 1:
screen.blit(p.image1, (x, y))
elif image == 2:
screen.blit(p.image2, (x, y))
#checks if you do something
for event in pygame.event.get():
#checks if that something you do is press a button
if event.type == pygame.KEYDOWN:
#quits program when escape key pressed
if event.key == pygame.K_ESCAPE:
sys.exit()
#checks if down arrow pressed
if event.key == pygame.K_DOWN:
#checks which image is active
if image == 1:
#switches to image not active
image = 2
elif image == 2:
image = 1
#updates the screen
pygame.display.update()
我不确定你的代码是如何设置的,或者这是否是你需要的(我也不完全理解 classes 所以它可能是一个精灵 class),但是希望对您有所帮助!