Java处理我可以同时有两个draw()方法运行吗?

Java Processing can I have two draw() methods running at the same time?

所以如果我有 class

class A extends PApplet{
    float x;
    float y;
    public A(float x, float y){
        this.x = x;
        this.y = y;
    }
    public void draw(){
        ellipse(x,y,10,10);
    }
}

还有一个class

class B extends PApplet{
    A a = new A(12,19);
    public void draw(){
        ellipse(25,25,25,25);
    }
}

只会绘制B中的椭圆。这是有两种绘制方法的问题吗?如果不是,问题是什么?有没有一种方法可以让两个省略号都出现?这可能与线程有关吗?我读过一些关于它们的资料,但从未使用过它们,所以如果是这样,请也解释一下线程。

如果要使用线程,可以使用Threadclass。线程就像同一程序中的不同进程。但是,它们可以共享相同的内存——这意味着它们可以使用相同的变量(与不共享内存的进程不同)。然后你就有了如何正确使用线程的整个问题,你可以看到更多:here

下面是一个如何使用线程的简单示例:

Thread t = new Thread(new Runnable() {
@Override
public void run() {
    //your code
}
});
t.run();//don't forget to run!

这样想:只有一张草图可以是你"main"草图。那是调用了 draw() 函数的草图。处理自动调用此函数。如果您使用的是 eclipse 之类的软件,则在调用 main() 方法时指定主草图。

综上所述,最简单的方法可能是简单地从 B.draw() 调用 A.draw()

如果您这样做,您的 A class 不应扩展 PApplet。只需传入 B PApplet 并改用它。把它们放在一起:

class A{
    float x;
    float y;
    PApplet myPApplet;
    public A(float x, float y, PApplet myPApplet){
        this.x = x;
        this.y = y;
        this.myPApplet = myPApplet;
    }
    public void draw(){
        myPApplet.ellipse(x,y,10,10);
    }
}

class B extends PApplet{
    A a = new A(12,19, this);
    public void draw(){
        ellipse(25,25,25,25);
        a.draw();
    }
}

将每个 PApplet 视为一个 单独的 window。如果你想要一个 window,那么你应该只有一个 PApplet.