Python Sprite未在pygame中渲染
我读过一些关于精灵的例子,但我遗漏了一些小的关键点。此代码不会引发错误,但预期的精灵将不会渲染。相反,我只看到了空白的白色背景。我应该看到的是一个绿色的正方形,中间有一个“7”。这个街区应该向右移动 导入系统 导入pygame pygame.init() 红色=(255,0,0) 绿色=(0,255,0) 蓝色=(0,0255) 白色=(255,255,255) main_surface=pygame.display.set_模式((500500),0,32) clock=pygame.time.clock() fps=30 SYS_FONT=pygame.FONT.SysFont(无,95) 类块(pygame.sprite.sprite): 定义初始化(自身、颜色、文本): pygame.sprite.sprite.\uuuuu init\uuuuuuu(自我) self.image=pygame.Surface((80,80)) self.rect=self.image.get_rect() self.image.fill(颜色) self.text\u surf=SYS\u FONT.render(text,False,白色) self.text\u rect=self.text\u surf.get\u rect(中心=self.rect.center) self.image.blit(self.text\u surf,self.text\u rect) def更新(自我): 自校正x+=5 sprites=pygame.sprite.Group() 块7=块(绿色,“7”) 精灵。添加(块7) 精灵绘制(主曲面) 尽管如此: 主表面填充(白色) 对于pygame.event.get()中的事件: 如果event.type==pygame.QUIT: pygame.quit() sys.exit() pygame.display.update() sprites.update() 时钟滴答声(fps)Python Sprite未在pygame中渲染,python,pygame,Python,Pygame,我读过一些关于精灵的例子,但我遗漏了一些小的关键点。此代码不会引发错误,但预期的精灵将不会渲染。相反,我只看到了空白的白色背景。我应该看到的是一个绿色的正方形,中间有一个“7”。这个街区应该向右移动 导入系统 导入pygame pygame.init() 红色=(255,0,0) 绿色=(0,255,0) 蓝色=(0,0255) 白色=(255,255,255) main_surface=pygame.display.set_模式((500500),0,32) clock=pygame.time
您还需要在循环中调用
精灵。绘制(主曲面)
:
为True时:
主表面填充(白色)
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
sprites.update()
sprites.draw(主曲面)#有两个问题。正如在另一个答案中提到的,您必须调用sprites.draw(主曲面)
。见以下文件:
将包含的精灵绘制到曲面参数。这将使用源曲面的Sprite.image
属性和位置的Sprite.rect
但顺序很重要。在主应用程序循环中连续渲染场景时,必须按列出的顺序执行以下步骤:
- 清除display(或绘制背景)
- 画场景
- 通过或更新显示
如果在清除显示后直接更新显示,则除已清除的显示外,您将看不到任何内容
因此,主回路必须是:
为True时:
#处理事件
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
pygame.quit()
sys.exit()
#更新精灵位置
sprites.update()
#清晰显示
主表面填充(白色)
#绘制场景(绘制精灵)
精灵绘制(主曲面)
#更新残障
pygame.display.update()
#极限FPS
时钟滴答声(fps)