我试图创建一个顶点数组,然后在该数组上运行'rect'函数以显示任意数量的矩形。现在,我有:
var vertices = new Array();
function setup() {
createCanvas(600, 600);
...
iter(width/2 - c/2, height/2 - c/2, c);
var i;
for (i = 0; i < vertices.length; i++) {
fill(200);
rect(vertices[i]);
}
}
然后:
function iter(x, y, len) {
r_1 = random(0, 1);
if (r_1 < 0.5){
vertices.push(x, y - len*0.5, len*0.5, len*0.5);
}
}
我已经看到很多关于使用map或foreach在数组上运行函数的信息,但是我不知道为什么它不起作用(特别是,使用for循环在数组上运行函数)。我显然对所有这些东西都是新手!对于我似乎误会的解释,将不胜感激。
谢谢
答案 0 :(得分:1)
这样做的时候
vertices.push(x,y-len*0.5,len*0.5,len*0.5)
您正在使用四个参数调用push
,因此四个项将被推送到数组。因为您稍后要用rect
调用verticies[i]
,所以听起来verticies
的每个项目都应该是某种数据容器-数组或对象,否则每个顶点的点将被分为多个指标。例如,如果要使用数组:
function iter(x, y, len) {
r_1 = random(0, 1);
if (r_1 < 0.5){
vertices.push([x, y - len*0.5, len*0.5, len*0.5]);
}
}
然后将vertex
数组中的每个数组扩展到rect
参数列表中:
function setup() {
createCanvas(600, 600);
// ...
iter(width/2 - c/2, height/2 - c/2, c);
var i;
for (i = 0; i < vertices.length; i++) {
fill(200);
rect(...vertices[i]);
}
}
这假设rect
是一个接受4个参数的函数。 (您也可以更改rect
,使其改为接受单个数组作为参数,并根据需要避免使用扩展语法)
您还可以考虑使用数组文字而不是new Array
-调用Array构造函数是rarely a good idea:
var vertices = [];