我遇到了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。任何帮助将不胜感激。
答案 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;程序