为什么fill()会影响p5.js中的所有函数?

问题描述 投票:2回答:1

每当我在p5.js中使用fill()时,我的所有用户定义函数都会受到它的影响。为什么?

这是我的代码:

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;
}
processing p5.js
1个回答
4
投票

函数fill()没有填充任何东西。它设置用于填充形状的颜色。这种颜色是一种全球状态。 在处理中,形状由当前填充颜色填充。这导致调用fill后绘制的所有对象都被设置的颜色填充。 您必须调用noFill()来禁用填充几何体。

e.g

如果您执行以下操作,将填写在rotateAbout中绘制的对象:

fill(100, 100, 10);
rotateAbout(0, 0);

如果你这样做,他们将不会被填补:

noFill();
rotateAbout(0, 0);

请注意,填充颜色等状态甚至可以保持在帧之外。如果在draw末尾设置填充颜色,则下次输入draw时颜色仍将设置。 国家一直保持到下一次打电话给fill()noFill()

© www.soinside.com 2019 - 2024. All rights reserved.