如何解决在pygame中移动精灵而不闪烁
所以我一直在 pygame 中玩,我可以绘制并使用 update
方法来移动我的精灵,但是当我清除屏幕时,精灵会闪烁。如何在不闪烁的情况下移动精灵
代码如下:
class Sprite(pygame.sprite.Sprite):
def __init__(self,pos):
super(Sprite,self).__init__()
self.image = demon
self.rect = self.image.get_rect(center = pos)
def update(self,moveX,moveY):
self.rect.x += moveX
self.rect.y += moveY
screen.fill(BLACK)
解决方法
典型的 Pygame 应用程序循环必须:
- 通过
pygame.event.pump()
或pygame.event.get()
处理事件。 - 根据输入事件和时间(分别为帧)更新游戏状态和对象位置
- 清除整个显示或绘制背景
- 绘制整个场景(
blit
所有对象) - 通过
pygame.display.update()
或pygame.display.flip()
更新显示
删除 screen.fill(BLACK)
表单 update
:
class Sprite(pygame.sprite.Sprite):
# [...]
def update(self,moveX,moveY):
self.rect.x += moveX
self.rect.y += moveY
# screen.fill(BLACK) <--- DELETE
实现以下应用程序循环(基于您之前的问题):
while carryOn == True:
# handle events
for event in pygame.event.get():
if event.type==pygame.QUIT:
carryOn=False
# update
# [...]
# clear display
screen.fill(BLACK)
# draw sprites
all_sprites_list.draw(screen)
# update display
pygame.display.flip()
clock.tick(60)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。