在实例模式下调用新的 p5 实例时,我需要传递一个附加参数。
我希望能够做到这一点:
var x = 50;
var sketch = function(p5){
p5.setup = function(x){
// Canvas setup etc
rect(x,40,40,40)
}
}
new p5(sketch, x)
Run Code Online (Sandbox Code Playgroud)
现在,它显示为undefined,这让我相信new p5只能接受一个参数。是否有一种方法可以让我向实例传递额外的参数,而无需破解 p5?
是的,你不能p5像这样向对象添加随机参数。另请注意,p5构造函数和setup()函数是两个完全不同的东西。您调用构造函数,P5.js 库会setup()为您调用该函数。
我真的不确定你想做什么。为什么不直接删除参数x(未定义)并引用顶级x变量(50)呢?
你也许可以做一些稍微愚蠢的事情,如下所示:
function defineSketch(x){
return function(sketch){
sketch.setup = function(){
// Canvas setup etc
rect(x,40,40,40)
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
var mySketch = defineSketch(100);
new p5(mySketch);
Run Code Online (Sandbox Code Playgroud)
不过这太恶心了。
编辑:您还可以这样做:
var s = function( sketch ) {
sketch.setup = function() {
sketch.createCanvas(200, 200);
};
sketch.draw = function() {
sketch.background(0);
sketch.rect(sketch.x, sketch.y, 50, 50);
};
};
var myp5 = new p5(s);
myp5.x = 75;
myp5.y = 25;
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为这是您创建sketch的实例。p5因此,您可以向实例添加属性p5,并将其传递到草图函数中。
| 归档时间: |
|
| 查看次数: |
2845 次 |
| 最近记录: |