在P5js中使用createGraphics函数时如何执行函数?

时间:2017-08-24 11:38:02

标签: html5-canvas processing p5.js

我想使用createGraphics函数在另一个屏幕上绘制内容...然后将其粘贴到我的主草图中..

在文档中,他们给出的例子是:

function drawGradient() {
  for (let r = canvasX; r > 0; --r) {
    let lightnes = map(r,0,canvasX,360,0)
    fill(360, 360, lightnes)
    ellipse(0, 0, r, r)
  }
}

但我想做的事情比 pg.background(51)

更复杂

我想运行这个创建径向渐变的函数:

$gold = $_SESSION['Gold'] = $_SESSION['Gold'] - 50;
$attackDamage = $_SESSION['AtkDmg'] = $_SESSION['AtkDmg'] + 5;

但是如果我做了vignette.drawGradient()我得到错误:vignette.drawGradient不是函数...

那么我怎样才能在createGraphics函数中执行drawgradient函数中的内容呢?

以下是codepen:http://www.redmine.org/issues/8842

1 个答案:

答案 0 :(得分:1)

你不会在createGraphics()函数内部放置任何内容。 createGraphics()函数返回p5.Renderer的实例。然后,您可以在该实例上调用函数。

您尝试拨打vignette.drawGradient()时正朝着正确的方向前进,但就像您发现的那样,p5.Renderer不包含drawGradient()功能。只有你的草图包含该功能,因为它是你创建的。

p5.Renderer包含绘图功能:background()fill()rect()ellipse()等内容。因此,如果要将渐变绘制到vignette渲染器,则必须调用实际在vignette变量上绘制内容的函数。像这样:

function drawGradient() {
  for (let r = canvasX; r > 0; --r) {
    let lightnes = map(r,0,canvasX,360,0)
    vignette.fill(360, 360, lightnes)
    vignette.ellipse(0, 0, r, r)
  }
}