一種客戶端圖形用戶界面快速創建的方法與流程
2023-05-10 01:02:01

本發明涉及計算機軟體技術領域,尤其涉及一種客戶端圖形用戶界面快速創建的方法。
背景技術:
用戶界面,是指系統與用戶進行信息交換的媒介,是用戶操作硬體達成雙向交互、藉助硬體完成工作的重要渠道。計算機從早期的只能被少數專業人士使用發展到現在的廣泛應用於人們生活的各領域,從命令行用戶界面向圖形用戶界面的轉變起了至關重要的作用。
圖形用戶界面(Graphical User Interface,簡稱GUI),是一種使用戶與硬體間的通信更加便利的界面顯示格式,它允許用戶通過圖標或菜單選項,直觀、快捷地完成操作任務。圖形用戶界面功能的實現,是一個軟體開發和其在計算機設備上運行的過程。一般,複雜的圖形用戶界面,例如遊戲(特別是手機遊戲)等,往往採用開源的GUI系統開發,如CEGUI系統。
圖形用戶界面開發完成後,通常會以XML、JSON等這一類使用結構化方法標記數據的文本格式保存,在客戶端運行時,通過讀取和解析上述圖形用戶界面存儲文件以實現在PC、手機等計算機設備上創建該圖形用戶界面,進而實現其功能。
一個複雜的圖形用戶界面,以手機遊戲的圖形用戶界面為例,其通常是由頂層窗口和其所包含的一個或多個子窗口構成,子窗口又可以擁有子窗口,形成一個複雜的層級結構。當圖形界面編輯器將製作好的圖形用戶界面存儲為文本格式(即使用了結構化方法標記數據的文本格式)時,以XML為例,每一個窗口存儲到一個XML節點中,窗口的屬性存儲到該節點的屬性中;其中,頂層窗口存儲到該節點中,子級窗口則存儲到頂層窗口節點的子節點中,形成層級(也稱樹狀)的XML結構(參見圖1)。在圖1中,每一個Window(即窗口)就是一個XML節點,Window後面Type欄位存儲了它的類型,Name欄位則是該窗口的名稱,可在遊戲中用作查詢該窗口的唯一標識;Window下方縮進的行是Window的子節點,其中Property存儲Window的屬性(包括名稱和值),縮進的Window,是子窗口;如此嵌套,形成層級結構。當客戶端應用時,則從上述文件結構的存儲文本中解析和在設備上創建界面,其實現過程為,通過XML解析器(即對應的存儲文件文本格式解析器)獲得該XML文件的所有節點和屬性,依據節點和屬性在設備上創建出Window對象,再根據節點的層級關係設定這些Window對象的父子節點關係,最終獲得該XML文件存儲內容記錄的界面。
XML格式便於開發者閱讀和修改,但並不適合計算機設備解析。XML在解析過程中,由於涉及大量的字符串比較、解析和節點遍歷,效率低下,容易出現卡頓等問題,影響用戶體驗。
技術實現要素:
面對上述情況及其存在的問題,如果將圖形用戶界面的存儲數據以一種更能被計算機設備迅速讀取解析的格式,可以在一定程度上提高圖形用戶界面在計算機設備上的創建速度,避免效率低下及卡頓等問題。相較於XML等文本文件,二進位文件不僅可節省空間,而且能夠快速地被計算機設備讀取。但是,一個複雜的圖形用戶界面,特別是手機遊戲等這一類複雜的圖形用戶界面,其存儲文件存在著複雜的層狀結構,加之手機遊戲等這類圖形用戶界面自身的特點,其存儲文件轉化為二進位文件的過程也非簡單的XML、JSON等這一類使用結構化方法標記數據的文本格式文件向二進位文件轉化的過程。同時,在圖形用戶界面的創建過程中,讀取二進位文件創建圖形用戶界面的方法也區別於傳統的讀取、解析XML等這一類文本文件創建圖形用戶界面的方法。因此,為解決上述問題,本發明提供一種以二進位文件格式存儲的客戶端圖形用戶界面的創建方法。
本發明提供一種客戶端圖形用戶界面快速創建的方法,該方法通過獲取並反序列化存儲圖形用戶界面信息的二進位文件,以此來創建其所存儲的圖形用戶界面,在一定程度上提高圖形用戶界面在計算機設備上的創建速度,避免了現有技術中使用XML、JSON等這一類使用結構化方法標記數據的文本格式文件存儲在圖形用戶界面創建時該類型存儲文件解析效率低下、容易出現圖形用戶界面卡頓的問題。特別是遊戲(如手機遊戲),其對每秒幀數要求較高,其圖形用戶界面頻繁解析加載,更需要這種快速創建的方法。
本發明實施例提供一種客戶端圖形用戶界面快速創建的方法,該方法包括:
S1根據文件標識獲取存儲圖形用戶界面信息的二進位文件;
所述二進位文件是根據圖形用戶界面存儲文件進行二進位轉化獲得;所述圖形用戶界面存儲文件是以XML、JSON等這一類使用結構化方法標記數據的文本格式存儲;所述二進位文件包括文本標識、版本信息、節點類型及節點內容等;
S2根據所述二進位文件中的版本信息獲取與之對應的反序列化器組;每個文件版本,都有一組與其對應的反序列化組;
S3通過所述反序列化器組中的反序列化器從頂層窗口節點起逐層節點反序列化所述二進位文件,創建其所記載的圖形用戶界面;具體地,
從頂層窗口節點,根據其節點類型反序列化當前層節點,該節點反序列化完成後,判斷該層節點是否仍有子節點未被序列化,即判斷逐層反序列化進程是否完成,若是,則退出所述逐層反序列化進程,若否,則進一步反序列化所述子節點,如此逐層反序列化直至全部節點被反序列化。
進一步,上述方法中,所述二進位文件中,
所述文件標識,標識客戶端中的文件是否屬於所述二進位文件;
所述版本信息,標記當前版本信息;不同版本信息對應不同的反序列化器組;
所述節點,是指所述二進位文件中圖形用戶界面信息的基本存儲單位;所述節點按照類型分為窗口、自動窗口、引用文件、事件等;
此外,所述圖形用戶界面的存儲文件通常是由開發者通過GUI系統開發圖形用戶界面並序列化保存獲得,或通過自行開發編寫獲得;進一步,所述的GUI系統,優選為面向對象設計的GUI開發系統,如CEGUI系統;
進一步,根據其節點類型反序列化當前層節點,其中,
當所述節點類型為窗口時,所述節點內容為窗口及窗口中控制項的信息;其反序列化過程為,窗口反序列化器調取窗口,然後從所述窗口信息中讀取其屬性信息並據此設置所述窗口,控制項反序列化器調取對應的控制項,然後從所述控制項信息中讀取其屬性信息並據此設置所述控制項;
當所述節點類型為自動窗口時,所述自動窗口為已創建窗口,不需要窗口反序列化器再創建,此時,所述節點內容為窗口及窗口中控制項的信息;其反序列化過程為,窗口反序列化器從所述窗口信息中讀取其屬性信息並據此設置所述自動窗口,控制項反序列化器調取對應的控制項,然後從所述控制項信息中讀取其屬性信息並據此設置所述控制項;
當所述節點類型為引用文件時,所述節點內容則為所述引用文件的地址;其反序列化過程為,根據所述地址獲取所述引用文件,並跳轉執行步驟S1;
當所述節點類型為事件時,所述節點內容為事件信息;其反序列化過程為,讀取所述事件信息,設置所述事件;運行中,若觸發該事件,則調用其處理函數;
再進一步,所述控制項,根據圖形用戶界面窗口中常見的元素,一般包括文本、按鈕、滾動窗口等控制項;所述控制項反序列化器反序列化對應的控制項,具體地,
當所述控制項為文本時,文本型反序列化器調用文本框控制項,然後從所述控制項信息中讀取所述文本框的文本內容、字體名稱、字號等屬性信息,並據此設置所述文本框控制項;
若所述文本框為輸入框,則所述文本內容為空或顯示提示性文字;
當所述控制項為按鈕時,按鈕型反序列化器調用按鈕框控制項,然後從所述控制項信息中讀取所述按鈕的按鈕狀態等屬性信息,並據此設置所述按鈕控制項;所述按鈕狀態通常包括未按下、按下和/或禁用狀態;
當所述控制項為滾動窗口時,窗口型反序列化器調用窗口,然後從所述控制項信息中讀取滾動區域等屬性信息,並據此設置所述滾動窗口控制項。
由於遊戲(如手機遊戲)對每秒幀數要求較高,其圖形用戶界面頻繁解析加載,上述方法,尤其適用於遊戲(如手機遊戲)的圖形用戶界面的快速創建。
本發明通過獲取並反序列化存儲圖形用戶界面信息的二進位文件,以此來創建其所存儲的圖形用戶界面,在一定程度上提高圖形用戶界面在計算機設備上的創建速度,避免了現有技術中使用XML、JSON等這一類使用結構化方法標記數據的文本格式文件存儲在圖形用戶界面創建時該類型存儲文件解析效率低下、容易出現界面卡頓的問題,大大提升了用戶體驗。
附圖說明
圖1為以XML文本格式保存的圖形用戶界面文件的一部分內容的示例;
圖2為本發明實施例提供一種客戶端圖形用戶界面快速創建的方法的流程示意圖;
圖3為在實施例2基礎上公開的一種客戶端圖形用戶界面快速創建的程序流程示意圖。
具體實施方式
為使本發明實施例的目的、技術方案和取得的有益效果更加清楚,下面結合附圖,對本發明實施例中的技術方案進行清楚、完整地表述。但是應當理解,此處描述的實施例僅用於說明和解釋本發明,並不用於限定本發明。基於本發明中的實施例,本領域的技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。
本發明實施例提供一種客戶端圖形用戶界面快速創建的方法,如圖2所示,該方法包括:
S1根據文件標識獲取存儲圖形用戶界面信息的二進位文件;
所述二進位文件是根據圖形用戶界面存儲文件進行二進位轉化獲得;所述圖形用戶界面存儲文件是以XML、JSON等這一類使用結構化方法標記數據的文本格式存儲;所述二進位文件包括文本標識、版本信息、節點類型及節點內容等;
S2根據所述二進位文件中的版本信息獲取與之對應的反序列化器組;每個文件版本,都有一組與其對應的反序列化組;
S3通過所述反序列化器組中的反序列化器從頂層窗口節點起逐層節點反序列化所述二進位文件,創建其所記載的圖形用戶界面;
進一步,所述圖形用戶界面的存儲文件由開發者通過GUI系統開發圖形用戶界面並序列化保存獲得,或通過自行開發編寫獲得;再進一步,所述的GUI系統,優選為面向對象設計的GUI開發系統,如CEGUI系統;
進一步,所述二進位文件中,
所述文件標識,標識客戶端中的文件是否屬於所述二進位文件,例如,定義文件中的首段字節為文件標識,比如定義文件中首4個字節為文件標識,其中二進位文件標識為LBFM,即Layout Binary File Magic的縮寫;
所述版本信息,標記當前版本信息;不同版本信息對應不同的反序列化器組;通常版本信息通常由幾段字母數字組成,如V1.1.0.31,並以整形數據格式存儲;
所述節點,是指所述二進位文件中圖形用戶界面信息的基本存儲單位;所述節點按照類型分為窗口、自動窗口、引用文件、事件等;所述節點類型也以整形數據格式存儲;比如定義0為窗口、1為自動窗口、2引用文件、3為事件;
在本發明公開的一些實施例中,在上述實施例基礎上,如圖3所示,
從頂層窗口節點,根據其節點類型反序列化當前層節點,該節點反序列化完成後,判斷該層節點是否仍有子節點未被序列化,即判斷逐層反序列化進程是否完成,若是,則退出所述逐層反序列化進程,若否,則進一步反序列化所述子節點,如此逐層反序列化直至全部節點被反序列化;
進一步,根據其節點類型反序列化當前層節點,其中,
當所述節點類型為窗口時,所述節點內容為窗口及窗口中控制項的信息;其反序列化過程為,窗口反序列化器調取窗口,然後從所述窗口信息中讀取其屬性信息並據此設置所述窗口,控制項反序列化器調取對應的控制項,然後從所述控制項信息中讀取其屬性信息並據此設置所述控制項;
當所述節點類型為自動窗口時,所述自動窗口為已創建窗口,不需要窗口反序列化器再創建,此時,所述節點內容為窗口及窗口中控制項的信息;其反序列化過程為,窗口反序列化器從所述窗口信息中讀取其屬性信息並據此設置所述自動窗口,控制項反序列化器調取對應的控制項,然後從所述控制項信息中讀取其屬性信息並據此設置所述控制項;
當所述節點類型為引用文件時,所述節點內容則為所述引用文件的地址;其反序列化過程為,根據所述地址獲取所述引用文件,並跳轉執行步驟S1;
當所述節點類型為事件時,所述節點內容為事件信息;其反序列化過程為,讀取所述事件信息,設置所述事件;運行中,若觸發該事件,則調用其處理函數;
再進一步,所述控制項,根據圖形用戶界面窗口中常見的元素,一般包括文本、按鈕、滾動窗口等控制項;所述控制項反序列化器反序列化對應的控制項,具體地,
當所述控制項為文本時,文本型反序列化器調用文本框控制項,然後從所述控制項信息中讀取所述文本框的文本內容、字體名稱、字號等屬性信息,並據此設置所述文本框控制項;
若所述文本框為輸入框,則所述文本內容為空或顯示提示性文字;
當所述控制項為按鈕時,按鈕型反序列化器調用按鈕框控制項,然後從所述控制項信息中讀取所述按鈕的按鈕狀態等屬性信息,並據此設置所述按鈕控制項;所述按鈕狀態通常包括未按下、按下和/或禁用狀態;
當所述控制項為滾動窗口時,窗口型反序列化器調用窗口,然後從所述控制項信息中讀取滾動區域等屬性信息,並據此設置所述滾動窗口控制項。
由於遊戲(如手機遊戲)對每秒幀數要求較高,其圖形用戶界面頻繁解析加載,上述方法,尤其適用於遊戲(如手機遊戲)的圖形用戶界面的快速創建。
上述實施例通過獲取並反序列化存儲圖形用戶界面信息的二進位文件,以此來創建其所存儲的圖形用戶界面,在一定程度上提高圖形用戶界面在計算機設備上的創建速度,避免了現有技術中使用XML、JSON等這一類使用結構化方法標記數據的文本格式文件存儲在圖形用戶界面創建時該類型存儲文件解析效率低下、容易出現界面卡頓的問題,大大提升了用戶體驗。
最後應說明的是:以上實施例僅用於說明本發明的技術方案,而非對其限制;儘管參照前述實施例對本發明進行了詳細的說明,本領域的技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特徵進行等同替換;而這些修改或者替換,並不使相應技術方案的本質脫離本發明各實施例技術方案的精神和範圍。