[英]Swing graphics in multithreaded program
我正在編寫游戲; 像這樣的東西: http : //i.stack.imgur.com/HBrEE.png
我有一個名為Canvas的類,該類擴展了JLabel並在重寫的paintComponent()
,將網格線的圖像作為背景,然后繪制玩家和障礙物(牆壁)。
通過使用createGraphics()
,我得到了Graphics2D對象。 我也需要用它來繪制他們班上的武器和子彈。 (如您所見,有幾種武器可以在特定的時間間隔內發射子彈。)
為了實現所有這些功能,我使用SwingUtilities.invokeLater()
在Canvas類中繪制了網格線,播放器和牆。 我想為每個武器創建一個線程,為每個子彈創建一個線程。 我知道,這太過分了,但是由於我是多線程的新手,所以我沒有其他想法了!
還有另一個問題是Graphics2D對象:我需要在線程之間共享該對象,所以我想到了使用final
關鍵字; 但是這是不可能的,因為Graphics2D對象的值將在paintComponent()
確定。
在此先感謝您能提供的任何幫助。
永遠不要使用多線程渲染線程(至少在99%的情況下)。 大多數圖形程序將整個場景狀態保存在某個對象樹中,該對象樹每隔一個頻率(1/60秒)就會渲染一次。 渲染線程遍歷渲染樹中的每個對象,然后調用.paint或其他將獲取要繪制對象的對象。 沖洗並重復,就完成了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.