JXar是一個(gè)用來打包、解包迅雷自定義格式的xar文件的一個(gè)小程序。
主要功能:
全新的2.x版本代碼全部重寫,支持幾乎所有xar文件,包括迅雷7.1、7.2、7.9、極速版、尊享版、迅雷影音、迅雷壁紙、光影魔術(shù)手、微博桌面等。
更新日志:
JXar 2.1.0
第一次公開發(fā)布
XAR是什么文件?
Xunlei Archive,一種迅雷自定義文件格式。
layout:
本目錄主要由xml文件和lua腳本構(gòu)成,也可能是打包過的.xar格式的文件,其中包括對象樹模板,對象模板,宿主窗口模板,動畫模板的定義(這里要特別注意,定義的是模板,并非模板的實(shí)例),并描述他們的屬性,方法以及事件響應(yīng)。并且其中包含所有用戶自定義的控件,所有的用戶自定義控件由一個(gè)xml文件以及一個(gè)lua文件構(gòu)成,xml文件中定義控件的屬性,方法,以及事件對應(yīng)的響應(yīng)函數(shù),lua腳本中是這些方法和響應(yīng)函數(shù)的實(shí)現(xiàn)。XML文件中定義的模板和控件都是靜態(tài)的配置信息,只有在通過lua腳本創(chuàng)建控件或者創(chuàng)建模板實(shí)例的時(shí)候才會去獲取并解析其中的XML節(jié)點(diǎn)配置信息,解析的過程中會創(chuàng)建出來相應(yīng)類型的模板或者控件實(shí)例
res:
本目錄主要由資源包構(gòu)成,里面可能是一個(gè)個(gè)的zip格式的資源包,也可能只是文件夾格式的資源包。
nametable.cfg:
本文件主要用來描述layout包里面定義的控件和模板的位置,便于查找。該文件由XLUECL編譯工具生成。
onload.lua:
本文件是XAR中的驅(qū)動,XAR被加載時(shí)發(fā)現(xiàn)其中有這個(gè)文件,就會去加載并運(yùn)行它,通過它來將layout目錄里面定義的控件和res目錄里面定義的資源展示到程序界面中。這個(gè)文件標(biāo)明為可選,因?yàn)闆]有這個(gè)文件程序不會報(bào)錯,但對于功能完整的XAR包這個(gè)是必須的
package.cfg:
本文件主要是用來描述XAR包的一些信息,包括包名,作者,版權(quán)所有者等,另外還指明nametable.cfg文件的路徑,主資源包名,以及啟動腳本路徑,除此之外還可以指明該XAR包包含了哪個(gè)XAR包。如果指定了包含的XAR,那么加載該XAR包的時(shí)候也會去加載包含的XAR,除非包含的XAR已經(jīng)被加載過。因此,該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 節(jié)點(diǎn)
path: nametable.cfg 的位置
type: 目前僅支持xml
mainres 節(jié)點(diǎn)
package: 資源包的名字
loadsrcipt節(jié)點(diǎn)
path: 腳本路徑
type: 目前僅支持lua
include節(jié)點(diǎn)
package name表示每個(gè)依賴的包,可以多個(gè).
nametable.cfg格式說明
這個(gè)文件是由xluecl生成的,不需要編輯
layout目錄下文件格式說明:
layout目錄下可以包含xml和lua文件,xml和lua都是區(qū)分大小寫的
xml格式說明
1) root節(jié)點(diǎn)必須是xlue
2) root子節(jié)點(diǎn)可以是objtreetemplate, animation_def, control, hostwndtemplate, objtemplate, animationtemplate, stylelist.不允許出現(xiàn)其他節(jié)點(diǎn)
a) objtreetemplate:對象樹模板,可以包含id,class, templateid(從模板即成) 三種屬性,可以包含attr,obj, templateeventlist子節(jié)點(diǎn),不允許出現(xiàn)其他節(jié)點(diǎn)
i. attr可以包含子節(jié)點(diǎn)left, top, width, height, mousewheelstrategy
其中l(wèi)eft, top, width, height都支持位置表達(dá)式,也可以是數(shù)字
mousewheelstrategy指示當(dāng)前對象樹的mousewheel的分發(fā)策略,可以取值如下:
l focus 滾輪消息發(fā)往當(dāng)前焦點(diǎn)對象,這是之前一直使用的策略,也是默認(rèn)策略
l over 滾輪消息發(fā)往當(dāng)前鼠標(biāo)下面的合適對象,該對象必須可以接收鼠標(biāo)事件,zorder最高;如果沒有找到符合條件的對象,那么直接丟棄該消息,不再發(fā)往當(dāng)前焦點(diǎn)對象
ii. obj表示一個(gè)ui 對象,可以是標(biāo)準(zhǔn)對象,也可以是自定義control,具體配置查看obj配置
b) animation_def 參考自定義動畫
c) control 參考如何開發(fā)control
d) hostwndtemplate 參考 HostWnd的主要類型與使用場合,關(guān)鍵事件
e) objtemplate 參考control內(nèi)objtemplate介紹
f) animationtemplate 參考自定義動畫
g) stylelist