当前位置: BOLT界面引擎 > 知识库文章 > XAR包介绍

XAR包介绍

作者:王通 2012-03-19

         XAR: Xunlei Archive,一种迅雷自定义文件格式。

 

目录结构

 

 

layout:

         本目录主要由xml文件和lua脚本构成,也可能是打包过的.xar格式的文件,其中包括对象树模板,对象模板,宿主窗口模板,动画模板的定义(这里要特别注意,定义的是模板,并非模板的实例),并描述他们的属性,方法以及事件响应。并且其中包含所有用户自定义的控件,所有的用户自定义控件由一个xml文件以及一个lua文件构成,xml文件中定义控件的属性,方法,以及事件对应的响应函数,lua脚本中是这些方法和响应函数的实现。XML文件中定义的模板和控件都是静态的配置信息,只有在通过lua脚本创建控件或者创建模板实例的时候才会去获取并解析其中的XML节点配置信息,解析的过程中会创建出来相应类型的模板或者控件实例

 

res:

         本目录主要由资源包构成,里面可能是一个个的zip格式的资源包,也可能只是文件夹格式的资源包。

 

nametable.cfg:

    本文件主要用来描述layout包里面定义的控件和模板的位置,便于查找。该文件由XLUECL编译工具生成。

 

onload.lua:

  本文件是XAR中的驱动,XAR被加载时发现其中有这个文件,就会去加载并运行它,通过它来将layout目录里面定义的控件和res目录里面定义的资源展示到程序界面中。这个文件标明为可选,因为没有这个文件程序不会报错,但对于功能完整的XAR包这个是必须的

 

package.cfg:

    本文件主要是用来描述XAR包的一些信息,包括包名,作者,版权所有者等,另外还指明nametable.cfg文件的路径,主资源包名,以及启动脚本路径,除此之外还可以指明该XAR包包含了哪个XAR包。如果指定了包含的XAR,那么加载该XAR包的时候也会去加载包含的XAR,除非包含的XAR已经被加载过。因此,该XAR包可以使用包含的XAR包中的控件,资源等信息。

 

 

package.cfg格式说明:

<xlue name = "BoltFox" author="Thunder Corporation" copyright="(C) Thunder Corporation.">

<nametablecfg path="./nametable.cfg" type="xml"/>

<mainres package="default" />

<include>

         < package name=”xxx” />

</include>

<loadscript path="./onload.lua" type="lua"/>

</xlue>

 

name: xar 名字

author: xar 作者

nametablecfg 节点

path: nametable.cfg 的位置

type: 目前仅支持xml

 

mainres 节点

package: 资源包的名字

 

loadsrcipt节点

path: 脚本路径

type: 目前仅支持lua

 

include节点

package name表示每个依赖的包,可以多个.

 

nametable.cfg格式说明

这个文件是由xluecl生成的,不需要编辑

 

 

layout目录下文件格式说明:

layout目录下可以包含xmllua文件,xmllua都是区分大小写的

 

xml格式说明

1)       root节点必须是xlue

2)       root子节点可以是objtreetemplate, animation_def, control, hostwndtemplate, objtemplate, animationtemplate, stylelist.不允许出现其他节点

a)         objtreetemplate:对象树模板,可以包含id,class, templateid(从模板即成) 三种属性,可以包含attr,obj, templateeventlist子节点,不允许出现其他节点

                         i.              attr可以包含子节点left, top, width, height, mousewheelstrategy

其中left, top, width, height都支持位置表达式,也可以是数字

mousewheelstrategy指示当前对象树的mousewheel的分发策略,可以取值如下:

 

l  focus 滚轮消息发往当前焦点对象,这是之前一直使用的策略,也是默认策略

l  over 滚轮消息发往当前鼠标下面的合适对象,该对象必须可以接收鼠标事件,zorder最高;如果没有找到符合条件的对象,那么直接丢弃该消息,不再发往当前焦点对象

 

                       ii.              obj表示一个ui 对象,可以是标准对象,也可以是自定义control,具体配置查看obj配置

b)         animation_def 参考自定义动画

c)         control 参考如何开发control

d)         hostwndtemplate 参考 HostWnd的主要类型与使用场合,关键事件

e)         objtemplate 参考controlobjtemplate介绍

f)          animationtemplate 参考自定义动画

g)         stylelist

 

 

 

obj配置:

包含属性id,class, templateid

包含子节点attr, style, children,eventlist

1)       attr 具体包含子节点参照http://xldoc.xl7.xunlei.com/0000000018/index.html的属性列表,对于自定义control也可能包含control的属性

2)       style

3)       children内表示子对象,所有子节点都是obj

4)       eventlist表示事件列表,具体事件参照http://xldoc.xl7.xunlei.com/0000000018/index.html的事件列表,对于自定义control也可以包含control的事件

例子:

<obj id="parent" class="LayoutObject">

         <attr>

                   <left>1</left>

                   <top>1</top>

                   <width>father.width-3</width>

                   <height>father.height-2</height>

         </attr>

         <children>

                   <obj id="child1" class="LayoutObject">

                            <attr>

                                     <width>father.width</width>

                                     <height>father.height</height>

                            </attr>

                   </obj>

         </children>

         <eventlist>

                   <event name="OnInitControl" file="xxx.lua" func="OnInitControl" />

         </eventlist>

</obj>

 

 

迅雷公司 版权所有 Copyright 2003-2010 Thunder Inc.All Rights Reserved. 意见反馈:xl7doc@xunlei.com