好吧,我尝试滚动每张图像并将另一张图像附加在另一张图像后面 但它继续在图像后面显示灰色表面 这是我的代码的临时文件:
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()
代码工作得很好(至少,因为我已经测试过它),但我唯一的问题只是每个图像后面的灰色表面。
不幸的是,如果没有给我们实际的图像文件,就无法判断为什么会出现这些灰色方块。但是,您的图像很可能在文件中具有灰色背景,在这种情况下,您可以访问像 www.remove.bg 这样的在线网站并删除背景(在这种情况下,您需要使用 Convert_alpha()而不是在加载图像时使用convert()。或者,您可以将图像上的colorkey设置为灰色背景的任何颜色。但是,如果这样做,您必须小心,因为它会删除该颜色的所有像素,包括那些是图像的一部分而不是背景!
如果您有任何问题,请告诉我,希望这会有所帮助!