构造函数可以读取高度,但不能读取宽度?

问题描述 投票:0回答:2

初学者,如果术语不正确或者我可能没有像我需要的那样描述(或太描述),我们深表歉意。 ***编辑:我试图不发布我所有的代码,但看起来这是必要的,所以我更新了这篇文章。

我正在使用非常基本的浮动气泡在 Processing 中创建草图。为此,我在第二个选项卡中创建了一个名为 Bubble 的类:


class Bubble {

  int x;
  int y;
  int d;
  int s;
  color c;

  Bubble(){
    
    d = int(random(10, 100));
    x = int(random(d/2, width-d/2));
    y = height - d/2;
    s = int(random(-10, -1));
    c = color(random(255), random(255), random(255));
  }

  void render(){
    fill(c);
    circle(x, y, d);
  }
  
  void move(){
    y += s;
  }
  
  void reset(){
    if (y+d/2 <= 0){
      y = height-d/2;
    }
  }
}

现在,回到第一个选项卡,我有这个:

Bubble b1 = new Bubble();
Bubble b2 = new Bubble();
Bubble b3 = new Bubble();

void setup(){
  size(1200,800);
}

void draw(){
  background(0);
  
  b1.render();
  b1.move();
  b1.reset();
  println(b1.x);
  
  b2.render();
  b2.move();
  b2.reset();
  println(b2.x);
  
  b3.render();
  b3.move();
  b3.reset();
  println(b3.x);
}

当我运行它时,y 位置会按预期重置。但出于某种原因,这些圆圈拒绝在 x 轴上产生 80 多岁。我认为这意味着它的宽度默认为 100 像素......但是为什么呢?为什么它可以访问我分配的高度,但不能访问宽度?

class object constructor processing
2个回答
0
投票

尝试将构造函数重新做成这样:

class Bubble {
  int x;
  int y;
  int d;
  int s;
  color c;

  Bubble(int xcoord, int ycoord, int ddd, int sss, color myColor){   
    x = xcoord;
    y = ycoord;
    d = ddd;
    s = sss;
    c = myColor;
  }
  
}

类中还需要有一些方法,至少是一个display(),你没有或者至少没有发布。


0
投票

终于修好了!问题实际上是第一个选项卡的前三行,试图同时声明和初始化 b1、b2 和 b3。相反,我需要在全局范围内声明,然后在 setup() 内部进行初始化。有点让我觉得自己很愚蠢,但是,哦,好吧。无论如何,这里是:

Bubble b1;
Bubble b2;
Bubble b3;

void setup(){
  size(1200,800);
  
  b1 = new Bubble();
  b2 = new Bubble();
  b3 = new Bubble();
}

现在气泡会在整个屏幕上产生。 :)

也就是说,这仍然让我想知道我的班级如何能够访问高度而不是宽度。但是,这解决了它,所以我接受它,哈哈。

© www.soinside.com 2019 - 2024. All rights reserved.