我正在尋找某種組織應用程序的建議。JavaFX新場景或新窗格
當你具有包含內容選擇一個MainMenu,你按下一個按鈕時,取控制器具有兩個選擇: 一)改變,其中當前顯示的MainMenu內容 b)中創建一個新的場景並把舞臺切換到那一個
你在用什麼?有沒有什麼最佳做法?
目前我更喜歡a),因爲我可以保留LINK狀態欄等等,但這是「乾淨」的方式嗎?
我正在尋找某種組織應用程序的建議。JavaFX新場景或新窗格
當你具有包含內容選擇一個MainMenu,你按下一個按鈕時,取控制器具有兩個選擇: 一)改變,其中當前顯示的MainMenu內容 b)中創建一個新的場景並把舞臺切換到那一個
你在用什麼?有沒有什麼最佳做法?
目前我更喜歡a),因爲我可以保留LINK狀態欄等等,但這是「乾淨」的方式嗎?
首先有一些事情要考慮:
1)更改場景將取消您鏈接的事件處理程序,也可能是您提到的「狀態欄」。
2)Java是一種高度面向對象的語言,這也意味着不同對象之間的變化和使用多態是一種很好的做法。
我的經驗與事件處理程序有關,因爲除了鏈接到特定節點(按鈕)時,它們經常與場景鏈接,但可能還有其他類似的概念需要考慮。在我做的一個項目中,我在菜單,暫停,播放和遊戲之間切換了很多次,但由於我主要使用了相同的按鍵,並且鼠標幾乎沒有涉及太多,我意識到我不需要創建新的事件處理程序爲單獨的Scene
對象。相反,我使用Scene.setRoot();
方法來更改活動的顯示節點/窗格。然而,如果你的處理有很大的不同,例如從一個帶按鈕和文本字段的菜單變成一個FPS遊戲,其中每個輸入有不同的效果與菜單的不同效果,那麼它可能會更好在兩個不同的場景對象中有不同的覆蓋事件處理程序,而是使用Stage.setScene();
方法,因此使處理程序可以進行多處理處理,而不是在處理程序內部具有另一組控制結構,以便CPU在每個幀不處理時在菜單中。我知道當我說polymorphed時,我並不指代繼承多態,但它是我可以想到的最好的方式來描述避免額外的運行時代碼的情況下,你可能會喜歡更好的性能。
有趣的問題......我有同樣的疑問。 – ceklock