旧图像保留在带有精灵动画的屏幕上
Old images remain on screen with sprite animation
我试着制作青蛙的动画(就像这个视频中的:https://www.youtube.com/watch?v=MYaxPa_eZS0&list=PL8ui5HK3oSiHnIdi0XIAVXHAeulNmBrLy&index=4)。
我几乎成功了。但是使用我的代码,旧图像仍保留在屏幕上。我真的找不到我哪里出错了。有人可以看看我的代码并告诉我哪里出错了吗?这是我的代码:
import pygame
import sys
from os import path
pygame.init()
screen_width=600
screen_height=400
screen=pygame.display.set_mode((screen_width,screen_height))
pygame.display.set_caption('animation')
clock=pygame.time.Clock()
#classes
class Player(pygame.sprite.Sprite):
def __init__(self,images):
pygame.sprite.Sprite.__init__(self)
image_list=images
self.index=0
self.animation_state=False
self.image=pygame.image.load(image_list[self.index])
self.rect=self.image.get_rect()
self.rect.center=((screen_width//2),(screen_height//2))
def animation(self):
self.animation_state=True
def update(self):
if self.animation_state==True:
self.index+=0.07
if self.index >=10:
self.index=0
self.animation_state=False
self.image=pygame.image.load(image_list[int(self.index)])
#images
dir=path.dirname(__file__)
img_dir=path.join(dir,'img')
image_list=[]
for i in range (1,11):
image_list.append(path.join(img_dir,f'attack_{i}.png'))
player=Player(image_list)
player_group=pygame.sprite.Group()
player_group.add(player)
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
sys.exit()
if event.type==pygame.KEYDOWN:
if event.key==pygame.K_SPACE:
player.animation()
player_group.update()
player_group.draw(screen)
pygame.display.flip()
clock.tick(60)
pygame.quit()
sys.exit()
你必须先用一些颜色填充屏幕,这样所有以前的图像都
删除:
screen.fill((r, g, b))
然后您可以再次将内容绘制到屏幕上。希望这对你有用。
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
sys.exit()
if event.type==pygame.KEYDOWN:
if event.key==pygame.K_SPACE:
player.animation()
screen.fill((255, 255, 255))
player_group.update()
player_group.draw(screen)
pygame.display.flip()
clock.tick(60)
pygame.quit()
sys.exit()
我试着制作青蛙的动画(就像这个视频中的:https://www.youtube.com/watch?v=MYaxPa_eZS0&list=PL8ui5HK3oSiHnIdi0XIAVXHAeulNmBrLy&index=4)。 我几乎成功了。但是使用我的代码,旧图像仍保留在屏幕上。我真的找不到我哪里出错了。有人可以看看我的代码并告诉我哪里出错了吗?这是我的代码:
import pygame
import sys
from os import path
pygame.init()
screen_width=600
screen_height=400
screen=pygame.display.set_mode((screen_width,screen_height))
pygame.display.set_caption('animation')
clock=pygame.time.Clock()
#classes
class Player(pygame.sprite.Sprite):
def __init__(self,images):
pygame.sprite.Sprite.__init__(self)
image_list=images
self.index=0
self.animation_state=False
self.image=pygame.image.load(image_list[self.index])
self.rect=self.image.get_rect()
self.rect.center=((screen_width//2),(screen_height//2))
def animation(self):
self.animation_state=True
def update(self):
if self.animation_state==True:
self.index+=0.07
if self.index >=10:
self.index=0
self.animation_state=False
self.image=pygame.image.load(image_list[int(self.index)])
#images
dir=path.dirname(__file__)
img_dir=path.join(dir,'img')
image_list=[]
for i in range (1,11):
image_list.append(path.join(img_dir,f'attack_{i}.png'))
player=Player(image_list)
player_group=pygame.sprite.Group()
player_group.add(player)
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
sys.exit()
if event.type==pygame.KEYDOWN:
if event.key==pygame.K_SPACE:
player.animation()
player_group.update()
player_group.draw(screen)
pygame.display.flip()
clock.tick(60)
pygame.quit()
sys.exit()
你必须先用一些颜色填充屏幕,这样所有以前的图像都 删除:
screen.fill((r, g, b))
然后您可以再次将内容绘制到屏幕上。希望这对你有用。
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
sys.exit()
if event.type==pygame.KEYDOWN:
if event.key==pygame.K_SPACE:
player.animation()
screen.fill((255, 255, 255))
player_group.update()
player_group.draw(screen)
pygame.display.flip()
clock.tick(60)
pygame.quit()
sys.exit()