2017-08-08 54 views
0

如何在不使用精靈類的情況下將圖像轉換爲pygame中的另一圖像?另外,如何在將其轉換爲另一張圖像後刪除之前的圖像?我不知道你通過刪除圖像的意思到底是什麼如何將表面(圖像)轉換成pygame中的另一個表面?

+0

你究竟想要做什麼? – skrx

+0

將表面轉換爲另一個表面意味着什麼?更改爲新格式?你能向我們展示一個你嘗試過的代碼的例子,它可能會更清晰。 –

回答

0

我今天寫了一個小程序,演示瞭如何切換對象圖像(它可以幫助/回答您的問題)。它對大多數代碼的使用有記錄,所以更容易理解它的工作原理和原理(據我所知,任何人都可以在昨天開始編程)。

總之,這裏是代碼:

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() 

我不知道你的代碼是如何設置的,或者如果這是你需要什麼(我並不完全理解類要麼所以它可能是一個精靈類),但我希望這有助於!

0

轉換一個圖像到另一個是重新分配變量

firstImage = pygame.image.load("firstImage.png") 
secondImage = pygame.image.load("secondImage.png") 

firstImage = secondImage 

del secondImage 

一樣簡單。您可以使用「del secondImage」來刪除代碼中的引用並將其發送到垃圾回收。一旦你清除了屏幕並使更新後的圖像閃爍,應該不再有任何過時圖像的標誌。

相關問題