python - 我不明白 screen.fill() 是如何工作的
问题描述
屏幕填充应该改变背景颜色。但是如果我在屏幕填充之前画了任何东西,它就不会显示出来,但是如果我在它之后画了一些东西,那么它可以在更新的背景颜色下正常工作。我正在谈论的 2 个代码:在循环中(循环前 i 被初始化为 0):
pygame.draw.rect(screen, (255-i, i, 0),`pygame.Rect(30,30,60,60)`
i=(i+1)%255
screen.fill((0, 0, 0))
此代码显示黑屏
screen.fill((0,0,0))
pygame.draw.rect(screen, (255-i, i, 0), `pygame.Rect(30,30,60,60)`
i=(i+1)%255
这工作正常。为什么会这样?
解决方案
您应该pygame.display.update()
在代码中的某个位置调用,理想情况下它应该是主循环的最后一行。可能在其他地方,但应该在您的片段之后。那是实际在您的电脑屏幕上绘制的命令。
类似于pygame.draw
模块的功能或pygame.fill
在内表面上绘图(存储在您的电脑内存中的对象)。你可以想象他们只是编辑一个二维数组,其中这个数组的每个元素都是一个 3 或 4 长的元组,存储像素的 RGB 或 RGBA 颜色。
在您调用之前,屏幕上实际上不会显示任何内容pygame.display.update()
。基本上读取该二维数组并在调用时pygame.display.update()
根据二维数组中的值更改屏幕的像素。pygame.display.update()
这意味着在以下代码段中:
pygame.draw.rect(screen, (255-i, i, 0),`pygame.Rect(30,30,60,60)`
i=(i+1)%255
screen.fill((0, 0, 0))
您首先绘制矩形,然后用黑色填充整个屏幕,然后在代码调用时在 pc 屏幕上显示最终结果(黑屏)pygame.display.update()
。没有机会看到矩形。
反而
screen.fill((0,0,0))
pygame.draw.rect(screen, (255-i, i, 0), `pygame.Rect(30,30,60,60)`
i=(i+1)%255
这里你首先用黑色填充屏幕,然后绘制矩形,然后显示最终结果,即黑色背景和彩色矩形。
推荐阅读
- python - RedShift 或 DynamoDb
- python - Python中如何使用redis锁防止异步Job
- angular - ag-grid treeView:一种使子列x级深度可编辑但父母是总数的方法?
- java - 如何使用线中的两个点和线段的两个端点来检测线和线段是否相交
- php - 显示自定义类别时添加分页
- python - 将一对中的第二个元素分配给向量
- java - spring的model和session有什么区别
- json - 如何使用jq提取数据
- c# - 函数设置中的参数在 Azure 函数中仍然出现 Not found 问题
- mysql - 如何将此 MySQL 查询转换为 MSSQL 查询 COUNT()