基於BOLT的仿迅雷加速器界面開發(一)

Bolt界面引擎是迅雷公司從2009年開始開發的第四代界面庫。迅雷7是首個採用該引擎成功開發的產品,目前迅雷旗下大部分客戶端產品都基於該引擎開發。
本人在大概上一年,也就是2013年,接觸了一段時間迅雷的BOLT界面開發引擎。因爲本人也沒有使用過MFC的框架,以前也沒有類似的界面開發經驗,初次接觸BOLT的時候,可以說是有利有弊吧。BOLT引擎似乎還沒有開源(至少我接觸的那段時間沒有,C++是必須的),具體內部的實現我也不清楚,從使用上來說,迅雷的BOLT界面開發引擎主要依賴於LUA腳本語言的編寫,以及一定量的標籤文本語言編寫和與C++交互實現的擴展功能。
用戶可以通過BOLT引擎自定義界面控件,並把它當成一個模板來使用(推薦大家這樣使用),通過代碼的進一步編寫來實現各個控件的特殊功能擴展,減少重複的代碼編寫(界面設計的代碼量往往很大,這樣可以提高開發的效率,十分方便)。
說道界面開發就離不開對素材方面的使用,迅雷BOLT將對素材的使用和管理獨立出來,用戶可以自己添加素材文件,使用XML標籤語言文本進行定義說明(每一個素材文件都可以自定義名稱,方便界面開發過程中的調用),在運用於整體的界面開發過程之中。對於圖片素材的定義可以採用多種複合需求的格式進行定義,對應的調用形式也會有些許區別。


如爲了方便素材的整合管理,一張圖片素材中可以包含一組以特定像素線分割的多個可以素材圖片,使用INDEX保留字定義各個圖片的序號,進行區分,方便使用,如上圖所示(imagelist texture bitmap爲定義類型,vertical splitter爲可選項,image爲素材路徑)。
迅雷BOLT引擎的素材管理還包括了顏色的定義和使用,具體的編寫可參考下圖。在XLUE以及RESOURE標籤的覆蓋下在COLOR標籤內定義顏色id(調用訪問名稱),以及像素和alpha透明度。


文字的定義包含了對字體寬高以及類型的定義,通過使用自定義的文字ID實現對特定字體類型的訪問和使用。


在開發目錄的nametable.cfg文件中可以聲明添加自定義的控件,從某一方面來說界面開發就是一系列控件的集合,通過控件之間的整合和聯動實現整體界面的開發運用。界面各個功能模塊窗口以及主體窗口也都在其中。

一般定義的類型包含control控件類型,以及HostWndTemplate窗口實體,以及ObjectTreeTemplate窗口控件樹模型。

ObjectTreeTemplate定義了窗口實體中的各個控件的位置寬高以及相應的監控響應,等等,通過父子之間的聯繫可以區分各個功能和模塊。


迅雷BOLT內封裝了多個可以調用的事件監控以及響應。

關於窗口的事件監控響應:窗口關閉時ONCLOSE,窗口初始化時ONINITCONTROL,窗口最下小化時ONMINISIZE。



關於控件的事件監控和響應:監控鼠標事件ONMOUSEMOVE,ONMOUSELEAVE,ONCLICK等等。


開發根目錄下的package.cfg,包含了開發版權的說明,以及界面啓動時依賴的ONLOAD的LUA初始化文件目錄地址(界面的啓動會首先調用ONLOAD文件的配置)。



最終實現的UI界面如下圖所示,處於遊戲加速功能界面時的顯示效果。


通過切換到未實現的會員中心功能窗口時的對比效果顯示如下圖所示。


實現遊戲的僞智能添加。





啓動加速(停止加速的實現)各個操作時的平滑動畫的實現

加速完成(累計加速功能會自動計時加速時間)





主界面的選項卡對比顯示(官方公告,會員開通)


登陸選項功能(選中輸入框時會有框體移動動畫,讀條動畫,密碼隱藏)



菜單欄的實現(意見反饋,皮膚更換,選項菜單等)





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章