2015-12-09 99 views
1

所以,如果我有一個類Java Processing可以讓兩個draw()方法同時運行嗎?

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橢圓將繪製。這是有兩個繪製方法的問題嗎?如果不是,那麼問題是什麼?有沒有辦法做這種事情,以便兩個橢圓都顯示出來?這可能是一個與線程有關的問題嗎?我已經閱讀了一些關於它們的內容,但從未使用它們,所以如果是這樣,請解釋一下線程。

+0

請您發佈此方法代碼的可訪問性。 –

+0

@vishalgajera你是指我的代碼的可訪問性?對不起,如果這是一個明顯的問題,我有點新。 –

+0

@vishalgajera這是處理。 –

回答

2

想想這樣說:只一個素描可以是你的「主要」素描。這是調用draw()函數的草圖。處理自動調用此函數。如果您使用的是類似eclipse的東西,則在調用main()方法時指定主草圖。

所有這一切,最簡單的方法可能是從B.draw()簡單地呼叫A.draw()

如果你這樣做,你的A類不應該延伸PApplet。只需傳入B PApplet即可。全部放在一起:每個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

+0

謝謝!這很好! –

0

如果要使用線程,可以使用Thread類。線程在同一個程序中就像不同的進程。但是,他們可以共享相同的內存 - 這意味着他們可以使用相同的變量(與不共享內存的進程不同)。然後,你必須知道如何正確使用線程THR整個問題,你可以看到更多關於:here

下面是如何使用一個線程一個簡單的例子:

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