这是一个例子。运行代码时,将调用setup()
和draw()
方法并影响程序。我不明白的是没有方法调用。
这是如何实现的?
import processing.core.PApplet;
public class MyDisplay extends PApplet {
public void setup()
{
size(400, 400);
background(200, 200, 200);
}
public void draw()
{
fill(255, 255, 0);
ellipse(200, 200, 390, 390);
fill(0, 0, 0);
ellipse(120, 130, 50, 70);
ellipse(280, 130, 50, 70);
noFill();
arc(200, 280, 75, 75, 0, PI);
}
}
答案 0 :(得分:3)
来自文档:
“程序启动时会调用setup()函数。”
和Draw():“在setup()之后直接调用,并连续执行其块中包含的代码行,直到程序停止或调用noLoop()。”
这是因为你的类扩展了PApplet而被调用。
您可以阅读有关函数here
的更多信息答案 1 :(得分:2)
以下是一个简单的示例:
由于MyDisplay
未定义任何构造函数,因此编译器将生成默认构造函数。这个构造函数就像:
public MyDisplay(){
super();
}
因为需要生成超类,所以需要它。
如果我相信PApplet
的文档说明
程序启动时调用setup()函数。
适用于draw
在setup()"
之后直接调用
构造函数可能看起来像(在简单版本中)
public class PApplet{
public PApplet(){
setup();
draw();
}
public void setup(){}
public void draw(){}
}
注意:那些代码不是真正的代码,它可能真的远非事实,但这是为了显示执行模式,而不是它背后的逻辑!
这意味着当构建MyDisplay
实例时,它将自动调用将执行这两个方法的PApplet
构造函数。在MyDisplay
中覆盖的方法。
一个好的建议是将注释@Override
添加到两个方法中,以便轻松注意从上面执行哪种方法,因为它们是定义和覆盖的。
public class MyDisplay extends PApplet {
@Override
public void setup()
{
...
}
@Override
public void draw()
{
...
}
}