基于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界面如下图所示,处于游戏加速功能界面时的显示效果。


通过切换到未实现的会员中心功能窗口时的对比效果显示如下图所示。


实现游戏的伪智能添加。





启动加速(停止加速的实现)各个操作时的平滑动画的实现

加速完成(累计加速功能会自动计时加速时间)





主界面的选项卡对比显示(官方公告,会员开通)


登陆选项功能(选中输入框时会有框体移动动画,读条动画,密码隐藏)



菜单栏的实现(意见反馈,皮肤更换,选项菜单等)





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