我正在研究一個關於多球彈跳的學校項目。到目前爲止,我設法創建了應用程序,一切正常。但是,我也需要在應用程序中實現多線程,這就是我被卡住的地方。我在想一球一線,但我不確定如何實現它。這是到目前爲止我的代碼(部分):多線程多球遊戲
public void paintComponent(Graphics g)
{
super.paintComponent(g);
//The balls are painted only after the timer is started
if(bTimer)
{
for(Ball ball:ballList.ballsArrayList)
{
Thread ballThread = new Thread(ball);
ballThread.start();
ball.draw(g);
/*other code for moving the ball*/
}
}
}
在Ball類:
public void draw(Graphics g) {
Color color = new Color(this.getColorR(),this.getColorG(),this.getColorB());
g.setColor(color);
int radius = this.getsize();
g.fillOval((int)(this.getX() - radius), (int)(this.getY() - radius), (int)(2 *
radius), (int)(2 * radius));
}
public void run() {
String name = Thread.currentThread().getName();
for (int i = 0; i < 200; i++) {
//ball.draw(g); ??
try {
Thread.sleep(50);
System.out.println("Sleeping");
} catch (Exception ex) {}
}
}
我在想,我可以把ball.draw()函數中的run()函數線程。但我不知道我該怎麼做,或者如果這是一個好主意。多線程仍然是我很難理解和貫徹=((
每個線程有一個球肯定是一個矯枉過正。你可以有數千個球!只需在一個線程中按順序處理所有球。 – Vlad
不是擺動(按設計)總是多線程? – Burkhard
無論如何,請不要將您的業務邏輯放入繪圖函數!您需要分離管理球的業務邏輯,包含所有物理的模型以及僅顯示結果的UI。 – Vlad