“星云”类不存在

时间:2017-05-19 23:44:07

标签: class processing

我遇到了Processing 3.3的问题。我刚刚开始使用一种星云模拟器,用于模拟恒星从星云到红巨星的诞生和生命周期。到目前为止,我已经创建了两个类:气体,每个气体粒子和星云,指的是粒子的集合。我在编辑器中输入以下代码,每次都得到相同的结果:“Class”Nebula“不存在。”我的代码大大简化如下:

气体:

class Gas {
  /* variables, constructor, etc. */

  void applyGravity(Nebula n) {
    /* code to apply force of gravity of
       the nebula to the particle */
  }
}

星云:

class Nebula {
  ArrayList<Gas> particles; // array of particles

  /* variables, constructor, etc. */
}

奇怪的是,我没有得到星云类中“类”气体“不存在”的错误,但我确实得到错误的“类”星云“气体类中不存在”。

我已尝试退出并重新打开文件,以及重新安装Processing。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

基本上,Processing编辑器可以处理两种类型的代码。第一种类型是函数调用的基本列表,如下所示:

size(500, 200);
background(0);
fill(255, 0, 0);
ellipse(width/2, height/2, width, height);

使用这种类型的代码,Processing只需一次运行一个命令。

第二种类型的代码是&#34;真实&#34;带有函数定义的程序,如下所示:

void setup(){
   size(500, 200);
}

void draw(){
    background(0);
    fill(255, 0, 0);
    ellipse(width/2, height/2, width, height);
}

使用这种类型的代码,Processing在开始时调用setup()函数一次,然后每秒调用draw()函数60次。

但请注意,您无法拥有混合两种类型的代码:

size(500, 200);

void draw(){
    background(0);
    fill(255, 0, 0);
    ellipse(width/2, height/2, width, height);
}

这会给你一个编译器错误,因为size()函数不在函数内部!

您的代码正在进行的是处理看到您还没有定义任何草图级函数,因此它会尝试将其视为第一种类型的代码。但它会看到类定义,它只在第二类代码中有效。这就是您收到错误的原因。

要解决您的问题,只需在代码中定义setup()和/或draw()功能,这样处理就知道它是真实的&#34;程序