如何在P5js中使用createGraphics函数时执行函数?
我想使用的createGraphics函数来绘制另一个屏幕上的东西...然后粘贴到我的主草图..如何在P5js中使用createGraphics函数时执行函数?
在实况,他们给出的例子是做这样的事情:
var vignette;
function setup(){
createCanvas(710, 400);
vignette = createGraphics(400, 250);
}
function draw(){
ellipse(mouseX, mouseY, 60, 60);
pg.background(51);
pg.noFill();
pg.stroke(255);
pg.ellipse(mouseX-150, mouseY-75, 60, 60);
//Draw the offscreen buffer to the screen with image()
image(pg, 150, 75);
}
但我想要做的是比pg.background(51)
我要运行该功能,创建一个径向渐变更为复杂:
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)
}
}
但如果我不vignette.drawGradient()我得到的错误:vignette.drawGradient不是一个函数...
所以,我怎么就可以执行的createGraphics内drawgradient函数里面的东西像什么功能?
这里是codepen:https://codepen.io/giorgiomartini/pen/ZJjWbw?editors=0010
你不会把任何 “内部” 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)
}
}
太好了,谢谢你的回答,但为什么我只能得到四分之一的圆圈,而且看起来都是黑色的,并且画出来了?继承我的codepen:https://codepen.io/giorgiomartini/pen/gxjoxp?editors=0010它应该看起来像一个正常的径向渐变。非常感谢! :) –
@GiorgioMartini因为你对'colorMode()'和'translate()'的调用在草图上,而不是在'vignette'变量上。 –
感谢您的回答,我尝试了您对颜色模式的建议,并将其翻译为需要放在小插曲上,但它仍然没有任何想法?这里的笔:https://codepen.io/giorgiomartini/pen/gxjoxp我在我的主要草图中留下了另一种颜色模式,因为我还需要一个。 –
顺便说一句,我注意到你只接受8个答案,尽管问了28个问题。在提出更多问题之前,您可能想回头接受一些答案。 –