【问题标题】:P5.js - Using erase() in instance mode returns "p.erase is not a function"P5.js - 在实例模式下使用 erase() 返回“p.erase 不是函数”
【发布时间】:2020-07-28 01:20:08
【问题描述】:

我目前在实例模式下使用 p5.js,并且我正在使用由 p5 对象的绘制函数调用的以下代码块。 p5对象的draw函数将p5对象作为p传递给下面的draw函数。

//Snippet 1
this.draw = function(p){
    ...    

    p.push();
    p.noStroke();
    tempColour = someFunc(); //returns color object
    p.fill(tempColour);
    p.ellipse(p.mouseX, p.mouseY, diameter);
    p.pop();
    ...
}

上面的代码按预期工作,没有异常。 现在,只要我使用 erase() 函数(见下文),控制台就会抛出异常 TypeError: p.erase is not a function. (In 'p.erase()', 'p.erase' is undefined)

//Snippet 2
this.draw = function(p){
    ...    

    p.push();
    
    //newly inserted start
    p.erase();
    p.ellipse(p.mouseX, p.mouseY, diameter);
    p.noErase();
    //newly inserted end
    
    p.noStroke();
    tempColour = someFunc(); //returns color object
    p.fill(tempColour);
    p.ellipse(p.mouseX, p.mouseY, diameter);
    p.pop();
    ...
}

我曾尝试在调用 push() 之前使用 erase() 函数,但不幸的是结果是一样的。我还检查了我没有意外地在 p5 对象上重新分配/重新声明擦除。 我很难理解 erase() 与 fill() 或 stroke() 或任何其他 p5 函数有何不同,以及它如何导致异常。

我的目标: 我传递给 ellipse 函数的颜色可能包含小于 255 的 alpha 值。Snippet 1 中的代码当前将椭圆绘制在彼此之上,最终导致完全不透明的椭圆(如果 mouseX和 mouseY 保持不变)。 我试图用 Snippet 2 实现的是椭圆函数绘制我传递给它的确切颜色,而不会增加不透明度。

非常感谢任何帮助

【问题讨论】:

    标签: javascript p5.js


    【解决方案1】:

    问题解决了,我使用的是旧版本的 p5 库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-02
      • 2020-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多