2013-05-05 50 views
2

我是新來的java,我試圖創建一個「遊戲」。如何在不調用多個「draw()」方法的情況下使用paintComponent()?

在我的遊戲我有我的主類中的paintComponent方法:

public void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    setBackground(new Color(120,120,255)); 
    BackgroundObject.drawGrass(g,385); 
    BackgroundObject.drawRoad(g,420); 
    BackgroundObject.drawSun(g,-20,-20); 
    myCar.draw(g); 
    debugger.draw(g); 
} 

的問題是,每一個對象我想畫的,我必須把它的paintComponent方法下(比如當我想畫出車,我必須把myCar.draw()放在paintComponent下)

有沒有辦法做到這一點?

public void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    setBackground(new Color(120,120,255)); 
    visualComponents.draw(g); 
    GUI.draw(g); 
} 

其中任何類都可以指示visualComponent類在調用visualComponents.draw()時繪製對象。

例如: 我的車類告訴visualComponent繪製車輛,只要visualComponent.draw(g);叫做。

概括起來我基本上詢問的大多數人是如何使用的paintComponent爲他們的程序

我一直在四處尋找谷歌的結構,但無法找到答案。

如果我的問題混淆你讓我知道。

+0

是的。你可以讓對象自己繪製。請參閱本文以獲取解釋和說明。 http://java-articles.info/articles/?p=196 – 2013-05-05 08:56:26

回答

2

您可以將元素添加到集合中,然後迭代集合並在循環中繪製每個集合。這可能會在幾行代碼中繪製100個對象。

example迭代Area實例的集合&吸引他們使用:

for (Area obstacle : obstacles) { 
     if (doAreasCollide(obstacle, player)) { 
      g.setColor(Color.RED); 
     } else { 
      g.setColor(Color.GREEN); 
     } 
     g.fill(obstacle); 
    } 

的3個綠色&一個紅色的障礙是集合中,當球(小黃圈)是分開繪製。

+0

謝謝,我會研究。 – CHess 2013-05-05 07:02:51

+0

謝謝。希望我能夠高興! – CHess 2013-05-05 07:27:52

+0

標記爲接受是我所需要的。很高興你把事情解決了。 :) – 2013-05-05 07:28:57

相關問題