如何在Python中使用pygame无限滚动背景图像

问题描述 投票:0回答:1

好吧,我尝试滚动每张图像并将另一张图像附加在另一张图像后面 但它继续在图像后面显示灰色表面 这是我的代码的临时文件:

import math 
import pygame as py 
  
py.init() 
  
clock = py.time.Clock() 
  
FrameHeight = 600
FrameWidth = 1200
  
# PYGAME FRAME WINDOW 
py.display.set_caption("Endless Scrolling in pygame") 
screen = py.display.set_mode((FrameWidth, 
                              FrameHeight)) 
  
# IMAGE 
bg = py.image.load("./Data/sky_background/bg2.png").convert()
# bg.set_colorkey((108,108,108))
# bg = py.transform.scale(bg, [FrameWidth, FrameHeight])
  
# DEFINING MAIN VARIABLES IN SCROLLING 
scroll = 0
  
# CHANGE THE BELOW 1 TO UPPER NUMBER IF 
# YOU GET BUFFERING OF THE IMAGE 
# HERE 1 IS THE CONSTATNT FOR REMOVING BUFFERING 
tiles = math.ceil(FrameWidth / bg.get_width()) + 1
  
# MAIN LOOP 
while 1: 
    # THIS WILL MANAGE THE SPEED OF 
    # THE SCROLLING IN PYGAME 
    clock.tick(33) 
  
    # APPENDING THE IMAGE TO THE BACK 
    # OF THE SAME IMAGE 
    i = 0
    while(i < tiles): 
        screen.blit(bg, (bg.get_width()*i+scroll, 0)) 
        i += 1
    # FRAME FOR SCROLLING 
    scroll -= 20
  
    # RESET THE SCROLL FRAME 
    if abs(scroll) > bg.get_width(): 
        scroll = 0
    # CLOSINF THE FRAME OF SCROLLING 
    for event in py.event.get(): 
        if event.type == py.QUIT: 
            quit() 
  
    py.display.flip() 
  
py.quit() 

代码工作得很好(至少,因为我已经测试过它),但我唯一的问题只是每个图像后面的灰色表面。

python pygame
1个回答
0
投票

不幸的是,如果没有给我们实际的图像文件,就无法判断为什么会出现这些灰色方块。但是,您的图像很可能在文件中具有灰色背景,在这种情况下,您可以访问像 www.remove.bg 这样的在线网站并删除背景(在这种情况下,您需要使用 Convert_alpha()而不是在加载图像时使用convert()。或者,您可以将图像上的colorkey设置为灰色背景的任何颜色。但是,如果这样做,您必须小心,因为它会删除该颜色的所有像素,包括那些是图像的一部分而不是背景!

如果您有任何问题,请告诉我,希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.