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

时间:2015-12-09 22:12:16

标签: java processing

所以,如果我有一个班级

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 B extends PApplet{
    A a = new A(12,19);
    public void draw(){
        ellipse(25,25,25,25);
    }
}

仅绘制B中的椭圆。这是两个绘制方法的问题吗?如果没有,问题是什么?有没有办法做这种事情,以便两个省略号出现?这可能与线程有关吗?我已经阅读了一些关于它们但从未使用过它们,所以如果是这样,请解释一下线程。

2 个答案:

答案 0 :(得分:2)

以这种方式思考:只有一个草图可以是你"主要"草图。这是调用draw()函数的草图。处理自动调用此函数。如果你正在使用像eclipse这样的东西,你可以在调用main()方法时指定主草图。

所有这一切,最简单的方法可能就是从A.draw()拨打B.draw()

如果您这样做,那么A课程不应该延长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视为单独的窗口。如果你想要一个窗口,那么你应该只有一个PApplet

答案 1 :(得分:0)

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

以下是如何使用线程的简单示例:

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