steam想申明库存量,不晓得在哪里去增设,那个出口处是稍稍有点儿深,由此可见毕竟也很单纯,一起来看一看什么样操作方式。操作方式方式01登入steam后,点选街道社区旁的对个人......
2024-02-05 549
本篇中使用的开发工具是Lae软件开发平台,这个工具主要运行于Windows系统,可以开发跨Android、ios、Windows、Linux、MacOX系统运行的软件、APP、游戏等。
Lae软件开发平台能够使软件UI制作与业务逻辑实现基本完全独立,在UI制作上完全无需编程,所见即所得,窗口之间可以相互叠加、相互关联,布局自由,自适应各种分辨率,具有参考图功能,能够实现实时的真机预览。 业务逻辑部分使用最简单的Lua脚本语言实现,具有机制简单,内存透明,业务逻辑相对独立且纯粹,自定义控件简单,运行效率高等特点。
下面给大家分享使用Lae软件开发工具开发小应用程序的过程,使用100行lua代码完成简单目录浏览器的制作。
--lua代码
lua编辑器csdn
--目录浏览器
--辅助接口
LXZDoFile("LXZHelper.lua");
LXZDoFile("serial.lua");
--每帧调用,root窗口status中IsActive设置为true,即可触发OnUpdate事件。local functionOnUpdate(window, msg, sender)
UpdateWindow();end
--更新目录子目录或者文件列表localfunction UpdateDirectry(dir)
local root = HelperGetRoot();
--set current dir.
lfs.chdir(dir);
HelperSetWindowText(root:GetLXZWindow("directry"),dir);
--
local items =root:GetLXZWindow("folders:area:items"); --目录文件容器
local item =root:GetLXZWindow("folders:item"); --目录文件项
local path = lfs.currentdir();
--清除容器中内容
items:ClearChilds();
--遍历该目录下的子目录文件
local cnt = 0;
for file in lfs.dir(lfs.currentdir())do
local wnd = item:Clone(); --克隆一个目录文件项"folders:item"
wnd:Show(); --显示
HelperSetWindowText(wnd:GetChild("text"),file); --设置目录或者文件名
items:AddChild(wnd); --加入items容器中
local f = path..""..file;
local attr = lfs.attributes(f);
if attr and attr.mode=="directory"then
wnd:GetChild("icon"):SetState(0);--通过0状态设置目录图标
else
wnd:GetChild("icon"):SetState(1);--通过1状态设置文件名图标
end
cnt=cnt 1;
end
--如果无法访问该目录,则添加"."与".."
if cnt==0 then
local wnd = item:Clone();
wnd:Show();
HelperSetWindowText(wnd:GetChild("text"),".");
items:AddChild(wnd);
local wnd = item:Clone();
wnd:Show();
HelperSetWindowText(wnd:GetChild("text"),"..");
items:AddChild(wnd);
end
--垂直滚动条适应内容大小。
local msg =CLXZMessage:new_local();
local wnd =root:GetLXZWindow("folders:vertical slider");
wnd:ProcMessage("OnReset", msg,wnd);
end
--点击目录或者文件项localfunction OnClickItem(window, msg, sender)
localfile=HelperGetWindowText(sender:GetChild("text"));
local path = lfs.currentdir();
local f = path..""..file;
local attr,err = lfs.attributes (f)
if attr== nil then
LXZMessageBox("error:"..err);
return;
end
--LXZMessageBox("type(attr)"..type(attr).."f:"..f)
assert (type(attr) == "table");
if attr.mode == "directory" then--如果是目录
UpdateDirectry(f);
end
end
--ui加载时触发该事件localfunction OnLoad(window, msg, sender)
local root = HelperGetRoot();
--set default.
local default_dir = "c:";
HelperSetWindowText(root:GetLXZWindow("directry"),default_dir);
--set folder list.
UpdateDirectry(default_dir);end
--事件与接口绑定localevent_callback = {}
event_callback ["OnUpdate"] =OnUpdate;
event_callback ["OnLoad"] = OnLoad;
event_callback ["OnClickItem"] =OnClickItem;
--事件分发器functionmain_dispacher(window, cmd, msg, sender)---LXZAPI_OutputDebugStr("cmd 1:"..cmd);
if(event_callback[cmd] ~= nil) then--LXZAPI_OutputDebugStr("cmd 2:"..cmd);
event_callback[cmd](window, msg,sender);
endend
增加权限、创建时间、修改时间等
--增加lua代码
if attr then
HelperSetWindowText(wnd:GetChild("access time"), os.date("%c", attr.access) );
HelperSetWindowText(wnd:GetChild("modify time"), os.date("%c", attr.modification));
HelperSetWindowText(wnd:GetChild("change time"), os.date("%c", attr.change));
HelperSetWindowText(wnd:GetChild("permissions"), attr.permissions);
end
--界面修改如下
--增加浏览图片的功能
--修改lua代码,增加事件
--获取扩展名 function getextension(filename)
return filename:match(". %.(%w )$") end
--鼠标进入local function OnMouseEnterItem(window, msg, sender)
local file=HelperGetWindowText(sender:GetChild("text"));
local path = lfs.currentdir();
local f = path..""..file;
local attr,err = lfs.attributes (f)
if attr== nil then
LXZMessageBox("error:"..err);
return;
end
local root = HelperGetRoot();
assert (type(attr) == "table");
local ext = getextension(file);
LXZAPI_OutputDebugStr("OnMouseEnterItem:"..f.." mode:"..attr.mode);
if attr.mode == "file" and (ext=="png" or ext=="PNG") then --如果是图片文件
LXZAPI_OutputDebugStr("OnMouseEnterItem:"..f.." ext:"..ext.." mode:"..attr.mode);
local wnd = root:GetLXZWindow ("folders:show picture");
HelperSetWindowPictureFile(wnd,f);
wnd:Show();
HelperCoroutine(function(thread)
AddWndUpdateFunc(wnd, EffectFaceOut, {from=255, End=200,step=3, old=255, hide=true}, thread);
coroutine.yield();
local texture = ILXZTexture:GetTexture(f);
if texture then
texture:RemoveTexture();
end
end);
endend
表现如下
以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!
相关文章
steam想申明库存量,不晓得在哪里去增设,那个出口处是稍稍有点儿深,由此可见毕竟也很单纯,一起来看一看什么样操作方式。操作方式方式01登入steam后,点选街道社区旁的对个人......
2024-02-05 549
操作方式方法01【辅助widget】多种辅助工具相连接两个功能键的可同时按【Shift】加此功能键挑选出1、正方形、圆锥选框辅助工具 【M】 2、终端辅助工具 【V】 3、截叶......
2024-02-05 481
操作方式01文档格式难题qq肖像最合适用jpeg文档格式的相片,若是相片有透明化地下通道,能选用png文档格式上载。 02大小不一难题若是相片极重也可能将引致上载失利,检......
2024-02-05 405