簡體   English   中英

在多線程程序中擺動圖形

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM