License:MIT许可协议
https://github.com/caidongyun/lomox/blob/master/License
===== lomox is a desktop web ui framework
vs 2013(vs2013 下载 Update5版本) or vs2012
下载 qt-win-opensource-5.4-vs2012.exe or qt-win-opensource-5.4-vs2013.exe安装
再下载 qt-vs-addin-opensource.exe
默认为VS2013工程 若要变为VS2012 请自行调整,如何调整自行百度
其他自己调整
https://github.com/caidongyun/lomox/wiki
lomox.dll 0.8.0.6 (詹晨辉KeoJam)
1.修复了开启托盘时鼠标事件不响应问题 2.修复了配置文件中titile为中文时乱码问题 3.加入openssl支持 4.窗口启用Frame时 关闭按钮可用 最新realse下载地址:http://pan.baidu.com/s/1kVDMdX9
========================== lomox.dll 0.8.0.5 (詹晨辉KeoJam)
1.增加了窗口设置接口 2.修复了QT5.5.1下release编译报错问题
========================== lomox.dll 0.8.0.4 (詹晨辉KeoJam)
1.LomoX.file.readFileData 支持文本读取 2.LomoX.dir.entryList 返回结果为对象,封装了类型 3.LomoX.dir.getType 加上路径类型判断接口
========================== lomox.dll 0.8.0.3 (曹良Colin3dmax)
1.升级lxWebEditPlugin支持Qt5.5,测试Vs2013下x86和x64此模块兼容性问题
lomox.dll 0.8.0.2 (曹良Colin3dmax)
1.测试Mac环境下,liblomox.dylib和Test项目的运行
2.修改项目配置文件,兼容Mac环境Lomox的使用
3.修改Mac下,启动路径为/开头的路径兼容
4.还有两项需要优化的地方 生成的Mac App的 Resouce资源 需要手动拷贝进入,目前还没有找到有效的方法自动把Resouce 和 Config.ini 自动写入App包 另外生成的动态库文件,需要手动拷贝到 /usr/lib/目录下去,否则 启动Test App 会包找不到动态库的问题
========================== lomox.dll 0.8.0.1 (曹良Colin3dmax)
1.测试Lomox在QT5.5.1下的运行情况,修复VS工程配置对Win32和x86的支持
2.Lomox代码编码格式统一改成UTF8-BOM编码格式
3.测试新手首次配置Lomox是可能遇到的问题,整理成下面的链接,后续有新问题,会更新进来 http://www.evernote.com/l/ANYux0NyZ9FIW50-TUU7965jGJFSjHcCUtY/
========================== lomox.dll 0.7.0.4 (詹晨辉KeoJam)
1.QT升级到QT5版本,由于QT4和QT5类库不同,不能再用QT4进行编译
2.bugfix
3.增加了系统托盘
4.增加了加载图标
5.增加了窗口父子关系配置
6.增加了打印接口(lxDialog.printPreview())
7.增加了下载功能
build QT5 LX 0.7.0.4 : http://pan.baidu.com/s/1jGIN5jS
The new version 20140427
Download the new version:
http://pan.baidu.com/s/1mgKBloO
github:
https://github.com/caidongyun/lomox
official: www.lomox.org
Modify points:
[cfg] url = http://www.baidu.com / / If you specify the url from the url started, if not start the default directory to find their own resources or resources main.lx packaged index.html or main.html
title = https://github.com/caidongyun/lomox|config.ini / /
mainframe = 1 main window if you want to bring a non-client area of a window frame system, one does not need to need 0, 0 is for the use of profiled window
maintop = 1 if the main window Top
childframe = 1 child window if you want to bring a non-client area of a window frame system, one does not need to need 0, 0 is for the use of profiled window
[maindialog] hrefincurrent = 0 / / main form href link is not currently open to 0, 1 href open in a new child window
[childdialog] hrefincurrent = 1 / / child window href link is not currently open to 0, 1 href open in a new child window
==============================================
配置: lomox / Release / config.ini \r\n
[cfg] url=http://www.baidu.com //如果指定url则从url启动,如果没有启动则默认在自己resources 目录下面找 main.lx打包资源 或index.html 或者 main.html
title=https://github.com/caidongyun/lomox|config.ini \r\n
mainframe=1 //主窗口是否要带非客户区系统窗口边框,1为需要 0 为不需要,0是给异形窗口使用
maintop=1 //主窗口是否置顶
childframe=1 //子窗口是否要带非客户区系统窗口边框,1为需要 0 为不需要,0是给异形窗口使用
dialogsrelation=0 //父子窗口关系,1为需要 0 为不需要,1是主窗口最小化 子窗口也最小化
systemtray=1 //是否显示系统托盘 1为需要 0 为不需要
trayicon=lomox.ico //系统托盘 图标,程序目录下
showloadinggif=1 //加载动画 1为需要 0 为不需要
loadinggifwidth=60 loadinggifheight=60 //动画大小
[maindialog] hrefincurrent=0 //主窗体 href链接是否在当前打开 0为否,href在新子窗口打开
[childdialog] hrefincurrent=1 //子窗口 href链接是否在当前打开 0为否,href在新子窗口打开
======================================================= LxDialog. 当前窗口操作
LxDialog API控制实例包装库(几百年前的库,终于找到了 by 曹良 超朋) http://pan.baidu.com/s/1qWJXnxM
=============== LomoX.libs
LomoX.dialogs
LomoX.file
LomoX.dir
LomoX.appPath
LomoX.args
LomoX.version
LomoX.net
LomoX.res
js扩展层 http://pan.baidu.com/s/1kT1PcJP 使用说明,里面加了一层库,不懂api可以看 下载文件里面 LxExt
/! LxExt.Dialog 对话框类 / LxExt.Dialog = function(){}; LxExt.Dialog.canDragBorder=false;//窗体边框是否可以拖拽
//设置窗口初始大小 LxExt.Dialog.initWndWH = function(width,height){ LxDialog.setDialogWH(width,height); LxDialog.width = width; LxDialog.height = height; };
//设置边框是否可以拖动 LxExt.Dialog.setBorderDrag= function( drag ){ if(drag!=undefined){ LxExt.Dialog.canDragBorder=drag; } return LxExt.Dialog.canDragBorder; };
//标题栏的的可拖着区域 //obj设置拖动区域的对象 LxExt.Dialog.dragRegion = function( obj ){ //解决LxDialog.move();的Bug,替换LxDialog.move(); function Point( x,y){ this.x=x; this.y=y; } var oldPoint=new Point(0,0); var currPoint=new Point(0,0); var topleftPoint=new Point(0,0); var canMoveWindow=false; function getWindowPos(){
topleftPoint.x=LxDialog.getTopLeftX();
topleftPoint.y=LxDialog.getTopLeftY();
}
obj.bind("mousedown",function(e){
oldPoint.x=e.pageX;
oldPoint.y=e.pageY;
getWindowPos();
canMoveWindow=true;
if(window.captureEvents){
window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
}
else{
obj.setCapture();
}
});
$(document).bind("mousemove",function(e){
if(canMoveWindow){
currPoint.x=e.pageX;
currPoint.y=e.pageY;
LxDialog.move( topleftPoint.x+currPoint.x-oldPoint.x, topleftPoint.y+currPoint.y-oldPoint.y);
getWindowPos();
}
})
$(document).bind("mouseup",function(){
canMoveWindow=false;
if(window.captureEvents)window.releaseEvents(Event.MOUSEMOVE|Event.MOUSEUP);
else obj.releaseCapture();
});
};
//移动窗口至x,y坐标处 LxExt.Dialog.moveWnd = function(x,y){ LxDialog.move(x,y); };
//最大化窗口 LxExt.Dialog.showMaximized = function(){ LxDialog.showMaximized(); };
//最小化窗口 LxExt.Dialog.showMinimized = function(){ LxDialog.showMinimized(); };
//关闭当前窗口 LxExt.Dialog.closeWnd = function(){ LxDialog.close(); };
//显示窗口 LxExt.Dialog.showNormal = function(){ LxDialog.showNormal(); };
//当前窗口是否最小化 LxExt.Dialog.isMinimized = function(){ return LxDialog.isMinimized(); };
//当前窗口是否最大化 LxExt.Dialog.isMaximized = function(){ return LxDialog.isMaximized(); };
//当前窗口是否全屏 LxExt.Dialog.isMaximized = function(){ return LxDialog.isMaximized(); };
//取得当前窗口限制的最小宽度 LxExt.Dialog.getMinWidth = function(){ return LxDialog.minimumWidth(); };
//取得当前窗口限制的最大宽度 LxExt.Dialog.getMaxWidth = function(){ return LxDialog.maximumWidth(); };
//取得当前窗口限制的最小高度 LxExt.Dialog.getMinHeight = function(){ return LxDialog.minimumHeight(); };
//取得当前窗口限制的最大高度 LxExt.Dialog.getMaxHeight = function(){ return LxDialog.maximumHeight(); };
//限制当前窗口最小宽度和最小高度 LxExt.Dialog.setMinimumSize = function(w,h){ LxDialog.setMinimumSize(w,h); };
//限制当前窗口最大宽度和最大高度 LxExt.Dialog.setMaximumSize = function(w,h){ LxDialog.setMaximumSize(w,h); };
//限制当前窗口最小宽度 LxExt.Dialog.setMinimumWidth = function(w){ LxDialog.setMinimumWidth(w); };
//限制当前窗口最小高度 LxExt.Dialog.setMinimumHeight= function(h){ LxDialog.setMinimumWidth(h); };
//限制当前窗口最大宽度和最大高度 LxExt.Dialog.setMaximumSize = function(h){ LxDialog.setMaximumSize(w,h); };
//限制当前窗口最大宽度 LxExt.Dialog.setMaximumWidth = function(w){ LxDialog.setMaximumWidth(w); };
//限制当前窗口最大高度 LxExt.Dialog.setMaximumHeight = function(h){ LxDialog.setMaximumHeight(h); };
//屏幕宽 LxExt.Dialog.getScreenWidth = function(){ return window.screen.width; };
//屏幕高 LxExt.Dialog.getScreenHeight = function(){ return window.screen.height; };
//窗口屏幕居中 LxExt.Dialog.centerWnd = function(){ LxExt.Dialog.moveWnd((LxExt.Dialog.getScreenWidth - LxExt.Dialog.width)/2,(LxExt.Dialog.getScreenHeight - LxExt.Dialog.height)/2); };
//显示窗口 LxExt.Dialog.showWnd = function(){ LxDialog.show(); };
//隐藏窗口 LxExt.Dialog.hideWnd = function(){ // };
//重新加载UI资源 LxExt.Dialog.Reload = function(){ LxDialog.reload(); }; //默认浏览器打开网址 LxExt.Dialog.openURL = function(addr){ LxDialog.openUrl(addr); }; //启动程序 LxExt.Dialog.exec = function(exeName){ LxDialog.openUrl(exeName); };
LxExt.Dialog.updateClientSize = function( objClient,offset ){ objClient.height( document.documentElement.clientHeight - objClient.position().top - offset ); }
/ 功能:默认对最外层Div实现边框拖拽功能 param:obj 添加拖拽功能的对象 pargm:int size 拖动感应区域 默认5 px; /
LxExt.Dialog.borderDrag=function(objBody,obj,size){ var size= typeof(size)=="undefined"?10:size; var canMoveWindow =false; function Point(x,y){ this.x=x; this.y=y; }
function isMouseInBorder( obj,point ){
var offset=obj.offset();
if(point.x<=offset.left+size && point.y<=offset.top+size ){
//左上角
return true;
}else if(point.x>=offset.left && point.x>offset.left+size && point.x<= obj.outerWidth(true)+offset.left-size && point.y<=offset.top+size){
//上边
return true;
}else if(point.x>=offset.left && point.x>obj.outerWidth(true)+offset.left-size && point.x<= obj.outerWidth(true)+offset.left && point.y<=offset.top+size ){
//右上角
return true;
}else if(point.x>obj.outerWidth(true)+offset.left-size && point.x<= obj.outerWidth(true)+offset.left && point.y>offset.top+size && point.y<= obj.outerHeight(true)+offset.top - size ){
//右边
return true;
}else if(point.x>obj.outerWidth(true)+offset.left-size && point.x<= obj.outerWidth(true)+offset.left && point.y>obj.outerHeight(true)+offset.top-size && point.y<= obj.outerHeight(true)+offset.top ){
//右下角
return true;
}else if( point.x>offset.left+size && point.x<= obj.outerWidth(true)+offset.left-size && point.y>obj.outerHeight(true)+offset.top-size && point.y<= obj.outerHeight(true)+offset.top ){
//下角
return true;
}else if(point.x>=offset.left && point.x<=offset.left+size && point.y>obj.outerHeight(true)+offset.top-size && point.y<= obj.outerHeight(true)+offset.top ){
//左下角
return true;
}else if(point.x>=offset.left && point.x<=offset.left+size && point.y>offset.top+size && point.y<= obj.outerHeight(true)+offset.top ){
return true;
}
return false;
}
var oldPoint;
var pointFlag=-1;
var windowWidth=0;
var windowHeight=0;
//绑定边框拖动的事件
if(obj){
//鼠标按下
obj.bind("mousedown",function(e){
if(LxExt.Dialog.canDragBorder){
oldPoint=new Point( e.pageX,e.pageY);
canMoveWindow = isMouseInBorder( obj,oldPoint );
windowWidth=document.documentElement.clientWidth;
windowHeight=document.documentElement.clientHeight;
}
if(window.captureEvents){
window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
}
else{
obj.setCapture();
}
});
//鼠标移动
$(document).bind("mousemove",function(e){
//如果启动边框拖动,改变窗体大小
if(LxExt.Dialog.canDragBorder){
//获取当前窗体坐标
var newPoint=new Point( e.pageX,e.pageY);
var offset = obj.offset();
//设置鼠标在对应区域中的样式
//判断鼠标位置
if(!canMoveWindow){
if(newPoint.x<=offset.left+size && newPoint.y<=offset.top+size ){
//左上角
pointFlag=0;
obj.css("cursor","nw-resize");
}else if(newPoint.x>=offset.left && newPoint.x>offset.left+size && newPoint.x<= obj.outerWidth(true)+offset.left-size && newPoint.y<=offset.top+size){
//上边
pointFlag=1;
obj.css("cursor","n-resize");
}else if(newPoint.x>=offset.left && newPoint.x>obj.outerWidth(true)+offset.left-size && newPoint.x<= obj.outerWidth(true)+offset.left && newPoint.y<=offset.top+size ){
//右上角
pointFlag=2;
obj.css("cursor","ne-resize");
}else if(newPoint.x>obj.outerWidth(true)+offset.left-size && newPoint.x<= obj.outerWidth(true)+offset.left && newPoint.y>offset.top+size && newPoint.y<= obj.outerHeight(true)+offset.top - size ){
//右边
pointFlag=3;
obj.css("cursor","e-resize");
}else if(newPoint.x>obj.outerWidth(true)+offset.left-size && newPoint.x<= obj.outerWidth(true)+offset.left && newPoint.y>obj.outerHeight(true)+offset.top-size && newPoint.y<= obj.outerHeight(true)+offset.top ){
//右下角
pointFlag=4;
obj.css("cursor","se-resize");
}else if( newPoint.x>offset.left+size && newPoint.x<= obj.outerWidth(true)+offset.left-size && newPoint.y>obj.outerHeight(true)+offset.top-size && newPoint.y<= obj.outerHeight(true)+offset.top ){
//下角
pointFlag=5;
obj.css("cursor","s-resize");
}else if(newPoint.x>=offset.left && newPoint.x<=offset.left+size && newPoint.y>obj.outerHeight(true)+offset.top-size && newPoint.y<= obj.outerHeight(true)+offset.top ){
//左下角
pointFlag=6;
obj.css("cursor","sw-resize");
}else if(newPoint.x>=offset.left && newPoint.x<=offset.left+size && newPoint.y>offset.top+size && newPoint.y<= obj.outerHeight(true)+offset.top ){
//左边
pointFlag=7;
obj.css("cursor","w-resize");
}
else{
//恢复默认
obj.css("cursor","default");
}
}
//1.左上角,右下角图标
//调整窗体大小
if(canMoveWindow){
//获取当前窗体大小
switch(pointFlag){
case 0:
//左上角
//设置TopLeft位置到当前
var offsetX=newPoint.x - oldPoint.x;
var offsetY=newPoint.y - oldPoint.y;
windowWidth=windowWidth- offsetX;
windowHeight=windowHeight - offsetY;
LxExt.Dialog.initWndWH(windowWidth ,windowHeight );
LxDialog.move(LxDialog.getTopLeftX()+offsetX,LxDialog.getTopLeftY()+offsetY);
break;
case 1:
//上边
var offsetX=newPoint.x - oldPoint.x;
var offsetY=newPoint.y - oldPoint.y;
windowHeight=windowHeight - offsetY;
LxExt.Dialog.initWndWH(windowWidth ,windowHeight );
LxDialog.move(LxDialog.getTopLeftX(),LxDialog.getTopLeftY()+offsetY);
break;
case 2:
//右上角
var offsetX=newPoint.x - oldPoint.x;
var offsetY=newPoint.y - oldPoint.y;
windowHeight=windowHeight - offsetY;
LxExt.Dialog.initWndWH(windowWidth + offsetX ,windowHeight );
LxDialog.move(LxDialog.getTopLeftX(),LxDialog.getTopLeftY()+offsetY);
break;
case 3:
//右边
LxExt.Dialog.initWndWH(windowWidth+ (newPoint.x - oldPoint.x) ,windowHeight );
break;
case 4:
//右下角
LxExt.Dialog.initWndWH(windowWidth+ (newPoint.x - oldPoint.x) ,windowHeight+ (newPoint.y - oldPoint.y) );
break;
case 5:
//下边
LxExt.Dialog.initWndWH(windowWidth,windowHeight+ (newPoint.y - oldPoint.y) );
break;
case 6:
//左下角
var offsetX=newPoint.x - oldPoint.x;
var offsetY=newPoint.y - oldPoint.y;
windowWidth=windowWidth- offsetX;
LxExt.Dialog.initWndWH(windowWidth ,windowHeight+offsetY );
LxDialog.move(LxDialog.getTopLeftX()+offsetX,LxDialog.getTopLeftY());
break;
case 7:
//左边
var offsetX=newPoint.x - oldPoint.x;
var offsetY=newPoint.y - oldPoint.y;
windowWidth=windowWidth- offsetX;
LxExt.Dialog.initWndWH(windowWidth ,windowHeight );
LxDialog.move(LxDialog.getTopLeftX()+offsetX,LxDialog.getTopLeftY());
break;
case -1:
break;
}
LxExt.Dialog.updateClientSize( objBody,12 );
}
}
});
//鼠标抬起
$(document).bind("mouseup",function(){
if(LxExt.Dialog.canDragBorder){
canMoveWindow=false;
obj.css("cursor","default");
pointFlag=-1;
}
if(window.captureEvents){
window.releaseEvents(Event.MOUSEMOVE|Event.MOUSEUP);
}else{
obj.releaseCapture();
}
});
}
};
===================================================
LxExt.Dialog.initWndWH(width, height) 设置窗口初始大小 width 类型: int 指定初始化窗口宽度
height
类型:int
指定初始化窗口高度
LxExt.Dialog.setBorderDrag(drag) 设置边框是否可以拖动 drag 类型:boolean 设置边框是否可以拖动
return
类型:boolean
返回边框是否可以拖动
LxExt.Dialog.dragRegion(element) 指定一个element,使得这个element被拖动时来移动窗口位置 通常element可指向页面中的标题栏,使得拖动标题栏来移动窗口 element 类型:jQueryElement 一个jQuery对像
例子:
<body>
<div id="MyTitle">LxExt.Dialog 演示
<span id="btnExit" class="MyCloseButton" title="退出演示程序">[退出]</span>
<span id="btnMax" class="MyCloseButton" title="最大化">[最大]</span>
<span id="btnMin" class="MyCloseButton" title="最小化">[最小]</span>
</div>
<script type="text/javascript">
// 标题栏拖动可移动窗口
LxExt.Dialog.dragRegion($("#MyTitle"));
</script>
</body>
LxExt.Dialog.borderDrag(objBody, obj, size) 设定objBody与obj两个DIV之间的边距位置可以实现窗口大小调整 objBody 类型:jQueryElement 外层DIV的jQuery对像
obj
类型:jQueryElement
内层DIV的jQuery对像
size
类型:int
objBody与obj两个DIV之间的边距
默认为5
例子
<body>
<div id="MyWindow">
<div id="MyTitle">LxExt.Dialog 演示
<span id="btnExit" class="MyCloseButton" title="退出演示程序">[退出]</span>
<span id="btnMax" class="MyCloseButton" title="最大化">[最大]</span>
<span id="btnMin" class="MyCloseButton" title="最小化">[最小]</span>
</div>
<div id="MyBody">窗体内容区域<span id="test"></span></div>
</div>
<script type="text/javascript">
// 标题栏拖动可移动窗口
LxExt.Dialog.dragRegion($("#MyTitle"));
// 使得#MyWindow 与 #MyBody两个DIV之间的边距5px的位置可以实现窗口大小调整
LxExt.Dialog.borderDrag($("#MyBody"),$("#MyWindow"), 5);
</script>
</body>
LxExt.Dialog.moveWnd(x,y) 移动窗口至x,y坐标处 x 类型:int 指定窗口移动到x坐标
y
类型:int
指定窗口移动到y坐标
LxExt.Dialog.showMaximized() 最大化窗口
LxExt.Dialog.isMaximized() 判断窗口是否最大化 return 类型:boolean 返回窗口是否已经最大化
LxExt.Dialog.showMinimized() 最小化窗口
LxExt.Dialog.isMinimized() 判断窗口是否最小化 return 类型:boolean 返回窗口是否已经最小化
LxExt.Dialog.showNormal() 窗口最大化或最小化时,恢复窗口的大小
LxExt.Dialog.closeWnd() 关闭窗口
LxExt.Dialog.getMinWidth() 取得当前窗口限制的最小宽度 return 类型:int 返回当前窗口限制的最小宽度
LxExt.Dialog.getMinHeight() 取得当前窗口限制的最小高度 return 类型:int 返回当前窗口限制的最小高度
LxExt.Dialog.getMaxWidth 取得当前窗口限制的最大宽度 return 类型:int 返回当前窗口限制的最大宽度
LxExt.Dialog.getMaxHeight 取得当前窗口限制的最大高度 return 类型:int 返回当前窗口限制的最大高度
LxExt.Dialog.setMinimumSize(width, height) 限制当前窗口最小宽度和最小高度 width 类型:int 限制当前窗口最小宽度
height
类型:int
限制当前窗口最小高度
LxExt.Dialog.setMinimumWidth(width) 限制当前窗口最小宽度 width 类型:int 限制当前窗口最小宽度
LxExt.Dialog.setMinimumHeight(height) 限制当前窗口最小高度 height 类型:int 限制当前窗口最小高度
LxExt.Dialog.setMaximumSize(width, height) 限制当前窗口最大宽度和最大高度 width 类型:int 限制当前窗口最大宽度
height
类型:int
限制当前窗口最大高度
LxExt.Dialog.setMaximumWidth(width) 限制当前窗口最大宽度 width 类型:int 限制当前窗口最大宽度
LxExt.Dialog.setMaximumHeight(height) 限制当前窗口最大高度 height 类型:int 限制当前窗口最大高度
LxExt.Dialog.getScreenWidth() 获取屏幕宽度 return 类型:int 返回屏幕宽度
LxExt.Dialog.getScreenHeight() 获取屏幕高度 return 类型:int 返回屏幕高度
LxExt.Dialog.centerWnd() 窗口屏幕居中
LxExt.Dialog.showWnd() 显示窗口
LxExt.Dialog.hideWnd() 隐藏窗口
LxExt.Dialog.Reload() 重新加载UI资源
LxExt.Dialog.openURL(url) 默认浏览器打开网址
LxExt.Dialog.exec(exeName) 启动应用程序 exeName 类型:string 应用程序路径
LxExt.Dialog.updateClientSize(objClient, offset) 调整指定objClient对像的偏移位置 objClient 类型:jQueryElement 需要调整偏移位置的元素的jQuery对像
offset
类型:int
要调整的偏移值
LxExt.Transition.Button(config) 动画按钮类,实现图片按钮的过渡动画 config 类型:JSON config:{ string eventName 事件类型名称 默认为 "mouseenter" object eventTarget 事件触发对象 必须指定 object animTarget 动画显示对象 默认为eventTarget string image 用作过渡效果的图片路径 必须指定 string className 类样式名称 int width 首个图片元素的宽 默认为32 int height 首个图片元素的高 默认为32 int frames 图片元素帧数 默认为1帧 int x 首个图片元素的x坐标 默认为0 int y 首个图片元素的y坐标 默认为0 bool pos 动画正向播放或逆向播放,默认为true正向播放 pos[itive]简写 bool hori 按钮图片元素集水平或垂直方向 [true|false] 默认为true hori[zontale]简写 bool stop 图集播放结束是否停留在最后一帧 [true|false] 默认为true int speed 动画延时 默认为 50毫秒 int space 图集元素间隔 默认为0 }