luf*_*kou 2 javascript processing 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;
}
Run Code Online (Sandbox Code Playgroud)
该函数fill()不填充任何东西。它设置用于填充形状的颜色。这种颜色是全局状态。
在处理中,形状由当前填充颜色填充。这会导致调用后绘制的所有对象都fill被设置的颜色填充。
您必须调用noFill()以禁用填充几何体。
例如
rotateAbout如果您这样做,将填充绘制的对象:
fill(100, 100, 10);
rotateAbout(0, 0);
Run Code Online (Sandbox Code Playgroud)
如果您这样做,它们将不会被填充:
noFill();
rotateAbout(0, 0);
Run Code Online (Sandbox Code Playgroud)
请注意,像填充颜色这样的状态甚至会保持在帧之外。如果在 末尾设置填充颜色draw,则颜色仍将设置,draw下次输入时。
状态一直保持到下一次调用fill()or noFill()。