如何访问存储为数组中对象的形状的坐标

时间:2016-02-19 07:48:51

标签: processing

我已将几个随机绘制的线的坐标存储在一个对象数组中。 我现在希望能够以编程方式操作例如数组中所有对象中的x1。我无法弄清楚如何做到这一点,甚至无法看到如何查看存储线的坐标。如果我做println()我只是得到对象的内存引用。

以下是目前的代码:

class Line{
   public float x1, y1, x2, y2;

   public Line(float x1, float y1, float x2, float y2){
      this.x1 = x1;
      this.y1 = y1;
      this.x2 = x2;
      this.y2 = y2;
   }

   public void draw(){
      line(x1, y1, x2, y2);
       float rot = random(360);
      rotate(rot);
   }

   //public boolean intersects(Line other){
   //   //left as exercise for reader
   //}
}

ArrayList<Line> lines = new ArrayList<Line>();

void setup(){
  background(204);
  size(600, 600); 

   for(int i = 0; i < 20; i++){
       float r = random(500);
       float s = random(500);
       lines.add(new Line(r,s,r+10,s+10));


 printArray(lines);
 for(Line line : lines){
      line.draw();

   }
 }
}

1 个答案:

答案 0 :(得分:1)

只需使用点符号。使用Line类,您可以使用new关键字和构造函数(与类同名的特殊函数)创建Line对象(或实例):

Line aLine = new Lines(0,100,200,300);

一旦有了实例,就可以使用实例名称访问它的变量(称为属性),然后使用.符号,然后使用变量名称:

println("aLine's x1 is " + aLine.x1);

在示例代码中,您可以在draw()函数中访问每个Line实例的.draw()函数(称为方法):

for(Line line : lines){
      line.draw();

   }
 }

只需使用相同的概念来访问Line的其他成员:

for(Line line : lines){
      //wiggle first point's x coordinate a little (read/write x1 property)
      line.x1 = random(line.x1 - 3,line.x1 + 3);
      line.draw();

   }
 }

请务必阅读Daniel Shiffman's Objects tutorial了解详情。