javascript - 为什么 fill() 会影响 p5.js 中的所有函数?
问题描述
每当我fill()
在 p5.js 中使用时,我所有的用户定义函数都会受到它的影响。为什么?
这是我的代码:
let a1 = a2 = 0;
function setup() {
createCanvas(400, 400);
}
function draw() {
background(200);
fill(100,100,10);
translate(width/2,height/2);
angleMode(DEGREES);
rotate(a1);
ellipse(20,20,50,50);
a1+=1;
(20,20);
}
function rotateAbout(x,y){
translate(x,y);
angleMode(DEGREES);
rotate(a2);
ellipse(15,15,20,20);
a2+=1;
}
解决方案
该函数fill()
不填充任何内容。它设置用于填充形状的颜色。这种颜色是一个全局状态。
在处理中,形状由当前填充颜色填充。这导致调用后绘制的所有对象都fill
被设置的颜色填充。
您必须调用noFill()
以禁用填充几何图形。
例如
rotateAbout
如果您这样做,将填充绘制的对象:
fill(100, 100, 10);
rotateAbout(0, 0);
如果您这样做,它们将不会被填充:
noFill();
rotateAbout(0, 0);
请注意,像填充颜色这样的状态甚至会超出帧。如果在末尾设置了填充颜色draw
,颜色还是会设置,draw
下次输入的时候。
状态一直保持到下一次调用fill()
or noFill()
。
推荐阅读
- python - 如何合并 2 个嵌套的 json 对象,它们可能具有相似的值而没有重复?
- ios - 是什么干扰了 UIButton 内的自定义插图?
- android - 我可以在没有源代码的情况下使用 Dart Devtool 测试 APK 文件吗?
- javascript - 为 SVG 设置动画以在滚动时显示 svg 的百分比
- php - Laravel 8 内部连接两个表
- python - Maya 独立导入
- java - 如何使用 EmbeddedPostgres 运行 Spring Reactive 集成测试
- html - CSS - Safari - 固定定位元素与其相对容器无关
- c++ - 如何使用 XML 文件配置配置 systemd *.service
- flutter - Flutter AutofillHints oneTimeCode 不起作用