Processing 处理-类中的数组

Processing 处理-类中的数组,processing,Processing,我正在处理一个与我的学习相关的项目。我想制作具有特定纹理的3d长方体,到目前为止,我创建了一个具有不同纹理的长方体。我还想使用数组将它们显示在网格中,这样代码就在下面,无法理解如何将其转换为数组 作为图片,我只是简单地创建了6个不同的颜色框来检查它是如何工作的 Cube-myCube; int x; 无效设置(){ 尺寸(800800,P3D); myCube=新多维数据集(); } 作废提款(){ myCube.display(); } 类立方体{ PImage tex、tex1、tex2、t

我正在处理一个与我的学习相关的项目。我想制作具有特定纹理的3d长方体,到目前为止,我创建了一个具有不同纹理的长方体。我还想使用数组将它们显示在网格中,这样代码就在下面,无法理解如何将其转换为数组

作为图片,我只是简单地创建了6个不同的颜色框来检查它是如何工作的

Cube-myCube;
int x;
无效设置(){
尺寸(800800,P3D);
myCube=新多维数据集();
}
作废提款(){
myCube.display();
}
类立方体{
PImage tex、tex1、tex2、tex3、tex4、tex5;
无效显示(){
背景(0);
仰泳();
翻译(100+x,100+x,0);
rotateY(map(mouseX,0,width,0,PI));
rotateX(map(mouseY,0,height,0,PI));
量表(50);
tex=loadImage(“image0.jpg”);
tex1=loadImage(“image1.jpg”);
tex2=loadImage(“image2.jpg”);
tex3=loadImage(“image3.jpg”);
tex4=加载图像(“image4.jpg”);
tex5=加载图像(“image5.jpg”);
纹理模式(正常);
beginShape(四边形);
纹理(tex);
//+Z“前”面
顶点(-1,-1,1,0,0);
顶点(1,-1,1,1,0);
顶点(1,1,1,1,1);
顶点(-1,1,1,0,1);
endShape();
beginShape(四边形);
//-Z“后”面
纹理(tex1);
顶点(1,-1,-1,0,0);
顶点(-1,-1,-1,1,0);
顶点(-1,1,-1,1,1);
顶点(1,1,-1,0,1);
endShape();
beginShape(四边形);
//+Y“底”面
纹理(tex2);
顶点(-1,1,1,0,0);
顶点(1,1,1,1,0);
顶点(1,1,-1,1,1);
顶点(-1,1,-1,0,1);
endShape();
beginShape(四边形);
//-Y“顶”面
纹理(tex3);
顶点(-1,-1,-1,0,0);
顶点(1,-1,-1,1,0);
顶点(1,-1,1,1,1);
顶点(-1,-1,1,0,1);
endShape();
beginShape(四边形);
//+X“右”面
纹理(tex4);
顶点(1,-1,1,0,0);
顶点(1,-1,-1,1,0);
顶点(1,1,-1,1,1);
顶点(1,1,1,0,1);
endShape();
beginShape(四边形);
//-X“左”面
纹理(tex5);
顶点(-1,-1,-1,0,0);
顶点(-1,-1,1,1,0);
顶点(-1,1,1,1,1,1);
顶点(-1,1,-1,0,1);
endShape();
}
}
这是凯文帮助后的密码

ArrayList myCubes=new ArrayList();
无效设置(){
尺寸(800800,P3D);
帧率(60);
对于(int i=0;i<10;i++){
添加(新多维数据集());
}
}
作废提款(){
用于(多维数据集myCube:myCubes){
myCube.display();
}
}
类立方体{
PImage tex、tex1、tex2、tex3、tex4、tex5;
浮动x;
浮动y;
浮标;
公共多维数据集(){
x=随机(宽度);
这.y=随机(高度);
该量表=随机(10,50);
}
无效显示(){
背景(0);
仰泳();
pushMatrix();
背景(0);
仰泳();
平移(x,y,0);
rotateY(map(mouseX,0,width,0,PI));
rotateX(map(mouseY,0,height,0,PI));
规模(规模);
tex=loadImage(“image0.jpg”);
tex1=loadImage(“image1.jpg”);
tex2=loadImage(“image2.jpg”);
tex3=loadImage(“image3.jpg”);
tex4=加载图像(“image4.jpg”);
tex5=加载图像(“image5.jpg”);
纹理模式(正常);
beginShape(四边形);
纹理(tex);
//+Z“前”面
顶点(-1,-1,1,0,0);
顶点(1,-1,1,1,0);
顶点(1,1,1,1,1);
顶点(-1,1,1,0,1);
endShape();
beginShape(四边形);
//-Z“后”面
纹理(tex1);
顶点(1,-1,-1,0,0);
顶点(-1,-1,-1,1,0);
顶点(-1,1,-1,1,1);
顶点(1,1,-1,0,1);
endShape();
beginShape(四边形);
//+Y“底”面
纹理(tex2);
顶点(-1,1,1,0,0);
顶点(1,1,1,1,0);
顶点(1,1,-1,1,1);
顶点(-1,1,-1,0,1);
endShape();
beginShape(四边形);
//-Y“顶”面
纹理(tex3);
顶点(-1,-1,-1,0,0);
顶点(1,-1,-1,1,0);
顶点(1,-1,1,1,1);
顶点(-1,-1,1,0,1);
endShape();
beginShape(四边形);
//+X“右”面
纹理(tex4);
顶点(1,-1,1,0,0);
顶点(1,-1,-1,1,0);
顶点(1,1,-1,1,1);
顶点(1,1,1,0,1);
endShape();
beginShape(四边形);
//-X“左”面
纹理(tex5);
顶点(-1,-1,-1,0,0);
顶点(-1,-1,1,1,0);
顶点(-1,1,1,1,1,1);
顶点(-1,1,-1,0,1);
endShape();
popMatrix();
}
}

首先,您必须将其设置为使
多维数据集
类的每个实例都显示在不同的位置,否则您将无法确定是否有多个
多维数据集
。大概是这样的:

类多维数据集{
PImage tex、tex1、tex2、tex3、tex4、tex5;
浮动x;
浮动y;
浮标;
公共多维数据集(){
x=随机(宽度);
这.y=随机(高度);
该量表=随机(10,50);
}
无效显示(){
pushMatrix();
仰泳();
平移(x,y,0);
rotateY(map(mouseX,0,width,0,PI));
rotateX(map(mouseY,0,height,0,PI));
规模(规模);
//代码的其余部分
popMatrix();
注意,我已经添加了对
pushMatrix()
popMatrix()
的调用,因此平移和旋转不会叠加

这样,您就可以轻松地使用阵列而不是单个实例:

Cube[]myCubes=新多维数据集[10];
无效设置(){
尺寸(800800,P3D);
for(int i=0;i
您还可以使用
ArrayList

ArrayList myCubes=new ArrayList();
无效设置(){
尺寸(800800,P3D);
对于(int i=0;i<10;i++){
添加(新多维数据集());
}
}
作废提款(){
用于(多维数据集myCube:myCubes){
myCube.display();
}
}
编辑:更新代码后,您只能看到一个
多维数据集
,因为您正在为每个
多维数据集
重新绘制背景,因此您最终会在以前的
多维数据集
上进行绘制。将其移动到
绘制()的开头
函数。此外,每次绘制
多维数据集时都会加载纹理文件,这会导致速度变慢。请将其移动到
多维数据集
构造函数。将所有内容放在一起:

ArrayLi