BOLT UI界面引擎是如何工作的?(BOLT UI入门教程)

来源:互联网 发布:阿里云黑洞触发值 编辑:程序博客网 时间:2024/06/06 11:50

今天开始学习BOLTUI界面引擎,官方的教程写的太过粗糙了。第一步创建onload.lua文件

目录
  • ·第一步 创建模板
  • ·第二步 创建模板对象实例
  • ·第三步 创建对象树
  • ·第四步 实例化对象树
  • ·效果
  • ·源码

今天开始学习BOLT UI界面引擎,官方的教程写的太过粗糙了。

第一步 创建模板创建onload.lua文件1. 获取XLUE引擎内部的模板管理器对象,模板的创建,获取都需要通过这个对象

local templateMananger =XLGetObject("Xunlei.UIEngine.TemplateManager")

2. 获取要创建的hostwnd的模板,也就是读取指定的xml文件

local frameHostWndTemplate = templateMananger:GetTemplate("HelloXLUEWnd","HostWndTemplate")

上句代码用到了TemplateManger类的GetTemplate方法,该方法包括两个参数:

名称描述    templateID模板id templateClass 模板类型

它要读取的模板位于MainWnd.xml,模板类型是指xml标签<hostwndtemplate>,id:是批HelloXLUEWnd


<hostwndtemplateid="HelloXLUEWnd"class="FrameHostWnd">

<attr>

<mainwnd>1</mainwnd>

<title>itbug.baike.com</title>

<layered>1</layered>

<left>200</left>

<top>100</top>

<width>430</width>

<height>280</height>

<cacheleft>0</cacheleft>

<cachetop>0</cachetop>

<cachewidth>1000</cachewidth>

<cacheheight>720</cacheheight>

<center>1</center>

<topmost>0</topmost>

<visible>1</visible>

<enable>1</enable>

<active>1</active>

<maxbox>0</maxbox>

<minbox>0</minbox>

<minwidth>430</minwidth>

<minheight>289</minheight>

<maxwidth>1000</maxwidth>

maxheight>720</maxheight><

appwindow>1</appwindow>

<fps>30</fps>

</attr>

</hostwndtemplate>


第二步 创建模板对象实例
使用模板对象创建一个ID为MainFrame的实例,这个时候会根据之前记录下的节点对象,解析MainWnd节点的属性:
if frameHostWndTemplate then local frameHostWnd = frameHostWndTemplate:CreateInstance("HelloXLUE.MainFrame") ... end

第三步 创建对象树接着是创建对象树local objectTreeTemplate = templateMananger:GetTemplate("MainWndTree", "ObjectTreeTemplate")

在Mainwind.xml文件中对应要寻找的是:

<objtreetemplateid="HelloXLUETree"class="ObjectTreeTemplate"><attr><left>-200</left><top>-200</top><width>430</width><height>280</height></attr> //添加<obj>节点 </objtreetemplate>

在上述过程中,节点<obj>会被找到,并把其对象树对象上去。

第四步 实例化对象树if objectTreeTemplate then local uiObjectTree = objectTreeTemplate:CreateInstance("HelloXLUE.MainObjectTree") if uiObjectTree then frameHostWnd:BindUIObjectTree(uiObjectTree) frameHostWnd:Create() end end

在上述代码中,创建了对象化实例,并同时把对象化实例绑定到窗口模板实例上,它们之间是一一对应的。

效果会产生一个透明窗口:

BOLTUI界面引擎

原创粉丝点击