我正在尝试创建一个顶点数组,然后在此数组上运行'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循环在数组上执行函数(。我显然对这一切都很陌生!如果能解释一下我似乎误解了什么,我将不胜感激。
感谢
进行时
vertices.push(x,y-len*0.5,len*0.5,len*0.5)
您使用四个参数调用push
,因此的四个项被推送到数组中。因为稍后要用verticies[i]
调用rect
,所以听起来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
——调用数组构造函数很少是个好主意:
var vertices = [];