首页 > 电脑专区 > 电脑教程 >

如何使用100行lua代码实现简单目录浏览器

来源:互联网 2023-02-21 22:39:54 版权归原作者所有,如有侵权,请联系我们

本篇中使用的开发工具是Lae软件开发平台,这个工具主要运行于Windows系统,可以开发跨Android、ios、Windows、Linux、MacOX系统运行的软件、APP、游戏等。7wF办公区 - 实用经验教程分享!

Lae软件开发平台能够使软件UI制作与业务逻辑实现基本完全独立,在UI制作上完全无需编程,所见即所得,窗口之间可以相互叠加、相互关联,布局自由,自适应各种分辨率,具有参考图功能,能够实现实时的真机预览。 业务逻辑部分使用最简单的Lua脚本语言实现,具有机制简单,内存透明,业务逻辑相对独立且纯粹,自定义控件简单,运行效率高等特点。7wF办公区 - 实用经验教程分享!

下面给大家分享使用Lae软件开发工具开发小应用程序的过程,使用100行lua代码完成简单目录浏览器的制作。7wF办公区 - 实用经验教程分享!

如何使用100行lua代码实现简单目录浏览器7wF办公区 - 实用经验教程分享!

如何使用100行lua代码实现简单目录浏览器7wF办公区 - 实用经验教程分享!

工具/原料

  • Lae软件开发平台pan.baidu.com/s/1ckMy0Q

方法/步骤

  • 1

    --lua代码7wF办公区 - 实用经验教程分享!

    lua编辑器csdn7wF办公区 - 实用经验教程分享!

    7wF办公区 - 实用经验教程分享!

    --目录浏览器7wF办公区 - 实用经验教程分享!

    7wF办公区 - 实用经验教程分享!

    --辅助接口7wF办公区 - 实用经验教程分享!

    LXZDoFile("LXZHelper.lua");7wF办公区 - 实用经验教程分享!

    LXZDoFile("serial.lua");7wF办公区 - 实用经验教程分享!

    --每帧调用,root窗口status中IsActive设置为true,即可触发OnUpdate事件。local functionOnUpdate(window, msg, sender)7wF办公区 - 实用经验教程分享!

    UpdateWindow();end7wF办公区 - 实用经验教程分享!

    --更新目录子目录或者文件列表localfunction UpdateDirectry(dir)7wF办公区 - 实用经验教程分享!

    local root = HelperGetRoot();7wF办公区 - 实用经验教程分享!

    --set current dir.7wF办公区 - 实用经验教程分享!

    lfs.chdir(dir);7wF办公区 - 实用经验教程分享!

    HelperSetWindowText(root:GetLXZWindow("directry"),dir);7wF办公区 - 实用经验教程分享!

    --7wF办公区 - 实用经验教程分享!

    local items =root:GetLXZWindow("folders:area:items"); --目录文件容器7wF办公区 - 实用经验教程分享!

    local item =root:GetLXZWindow("folders:item"); --目录文件项7wF办公区 - 实用经验教程分享!

    local path = lfs.currentdir();7wF办公区 - 实用经验教程分享!

    --清除容器中内容7wF办公区 - 实用经验教程分享!

    items:ClearChilds();7wF办公区 - 实用经验教程分享!

    --遍历该目录下的子目录文件7wF办公区 - 实用经验教程分享!

    local cnt = 0;7wF办公区 - 实用经验教程分享!

    for file in lfs.dir(lfs.currentdir())do7wF办公区 - 实用经验教程分享!

    local wnd = item:Clone(); --克隆一个目录文件项"folders:item"7wF办公区 - 实用经验教程分享!

    wnd:Show(); --显示7wF办公区 - 实用经验教程分享!

    HelperSetWindowText(wnd:GetChild("text"),file); --设置目录或者文件名7wF办公区 - 实用经验教程分享!

    items:AddChild(wnd); --加入items容器中7wF办公区 - 实用经验教程分享!

    local f = path..""..file;7wF办公区 - 实用经验教程分享!

    local attr = lfs.attributes(f);7wF办公区 - 实用经验教程分享!

    if attr and attr.mode=="directory"then7wF办公区 - 实用经验教程分享!

    wnd:GetChild("icon"):SetState(0);--通过0状态设置目录图标7wF办公区 - 实用经验教程分享!

    else7wF办公区 - 实用经验教程分享!

    wnd:GetChild("icon"):SetState(1);--通过1状态设置文件名图标7wF办公区 - 实用经验教程分享!

    end7wF办公区 - 实用经验教程分享!

    cnt=cnt 1;7wF办公区 - 实用经验教程分享!

    end7wF办公区 - 实用经验教程分享!

    --如果无法访问该目录,则添加"."与".."7wF办公区 - 实用经验教程分享!

    if cnt==0 then7wF办公区 - 实用经验教程分享!

    local wnd = item:Clone();7wF办公区 - 实用经验教程分享!

    wnd:Show();7wF办公区 - 实用经验教程分享!

    HelperSetWindowText(wnd:GetChild("text"),".");7wF办公区 - 实用经验教程分享!

    items:AddChild(wnd);7wF办公区 - 实用经验教程分享!

    local wnd = item:Clone();7wF办公区 - 实用经验教程分享!

    wnd:Show();7wF办公区 - 实用经验教程分享!

    HelperSetWindowText(wnd:GetChild("text"),"..");7wF办公区 - 实用经验教程分享!

    items:AddChild(wnd);7wF办公区 - 实用经验教程分享!

    end7wF办公区 - 实用经验教程分享!

    --垂直滚动条适应内容大小。7wF办公区 - 实用经验教程分享!

    local msg =CLXZMessage:new_local();7wF办公区 - 实用经验教程分享!

    local wnd =root:GetLXZWindow("folders:vertical slider");7wF办公区 - 实用经验教程分享!

    wnd:ProcMessage("OnReset", msg,wnd);7wF办公区 - 实用经验教程分享!

    end7wF办公区 - 实用经验教程分享!

    --点击目录或者文件项localfunction OnClickItem(window, msg, sender)7wF办公区 - 实用经验教程分享!

    localfile=HelperGetWindowText(sender:GetChild("text"));7wF办公区 - 实用经验教程分享!

    local path = lfs.currentdir();7wF办公区 - 实用经验教程分享!

    local f = path..""..file;7wF办公区 - 实用经验教程分享!

    local attr,err = lfs.attributes (f)7wF办公区 - 实用经验教程分享!

    if attr== nil then7wF办公区 - 实用经验教程分享!

    LXZMessageBox("error:"..err);7wF办公区 - 实用经验教程分享!

    return;7wF办公区 - 实用经验教程分享!

    end7wF办公区 - 实用经验教程分享!

    --LXZMessageBox("type(attr)"..type(attr).."f:"..f)7wF办公区 - 实用经验教程分享!

    assert (type(attr) == "table");7wF办公区 - 实用经验教程分享!

    if attr.mode == "directory" then--如果是目录7wF办公区 - 实用经验教程分享!

    UpdateDirectry(f);7wF办公区 - 实用经验教程分享!

    end7wF办公区 - 实用经验教程分享!

    end7wF办公区 - 实用经验教程分享!

    --ui加载时触发该事件localfunction OnLoad(window, msg, sender)7wF办公区 - 实用经验教程分享!

    local root = HelperGetRoot();7wF办公区 - 实用经验教程分享!

    --set default.7wF办公区 - 实用经验教程分享!

    local default_dir = "c:";7wF办公区 - 实用经验教程分享!

    HelperSetWindowText(root:GetLXZWindow("directry"),default_dir);7wF办公区 - 实用经验教程分享!

    --set folder list.7wF办公区 - 实用经验教程分享!

    UpdateDirectry(default_dir);end7wF办公区 - 实用经验教程分享!

    --事件与接口绑定localevent_callback = {}7wF办公区 - 实用经验教程分享!

    event_callback ["OnUpdate"] =OnUpdate;7wF办公区 - 实用经验教程分享!

    event_callback ["OnLoad"] = OnLoad;7wF办公区 - 实用经验教程分享!

    event_callback ["OnClickItem"] =OnClickItem;7wF办公区 - 实用经验教程分享!

    --事件分发器functionmain_dispacher(window, cmd, msg, sender)---LXZAPI_OutputDebugStr("cmd 1:"..cmd);7wF办公区 - 实用经验教程分享!

    if(event_callback[cmd] ~= nil) then--LXZAPI_OutputDebugStr("cmd 2:"..cmd);7wF办公区 - 实用经验教程分享!

    event_callback[cmd](window, msg,sender);7wF办公区 - 实用经验教程分享!

    endend7wF办公区 - 实用经验教程分享!

    如何使用100行lua代码实现简单目录浏览器7wF办公区 - 实用经验教程分享!

  • 2

    7wF办公区 - 实用经验教程分享!

    增加权限、创建时间、修改时间等7wF办公区 - 实用经验教程分享!

    --增加lua代码7wF办公区 - 实用经验教程分享!

    if attr then7wF办公区 - 实用经验教程分享!

    HelperSetWindowText(wnd:GetChild("access time"), os.date("%c", attr.access) );7wF办公区 - 实用经验教程分享!

    HelperSetWindowText(wnd:GetChild("modify time"), os.date("%c", attr.modification));7wF办公区 - 实用经验教程分享!

    HelperSetWindowText(wnd:GetChild("change time"), os.date("%c", attr.change));7wF办公区 - 实用经验教程分享!

    HelperSetWindowText(wnd:GetChild("permissions"), attr.permissions);7wF办公区 - 实用经验教程分享!

    end7wF办公区 - 实用经验教程分享!

    --界面修改如下7wF办公区 - 实用经验教程分享!

    如何使用100行lua代码实现简单目录浏览器7wF办公区 - 实用经验教程分享!

  • 3

    --增加浏览图片的功能7wF办公区 - 实用经验教程分享!

    如何使用100行lua代码实现简单目录浏览器7wF办公区 - 实用经验教程分享!

  • 3相关内容非法爬取自百度经验
  • 4

    --修改lua代码,增加事件7wF办公区 - 实用经验教程分享!

    --获取扩展名 function getextension(filename)7wF办公区 - 实用经验教程分享!

    return filename:match(". %.(%w )$") end7wF办公区 - 实用经验教程分享!

    --鼠标进入local function OnMouseEnterItem(window, msg, sender)7wF办公区 - 实用经验教程分享!

    local file=HelperGetWindowText(sender:GetChild("text"));7wF办公区 - 实用经验教程分享!

    local path = lfs.currentdir();7wF办公区 - 实用经验教程分享!

    local f = path..""..file;7wF办公区 - 实用经验教程分享!

    local attr,err = lfs.attributes (f)7wF办公区 - 实用经验教程分享!

    if attr== nil then7wF办公区 - 实用经验教程分享!

    LXZMessageBox("error:"..err);7wF办公区 - 实用经验教程分享!

    return;7wF办公区 - 实用经验教程分享!

    end7wF办公区 - 实用经验教程分享!

    local root = HelperGetRoot();7wF办公区 - 实用经验教程分享!

    assert (type(attr) == "table");7wF办公区 - 实用经验教程分享!

    local ext = getextension(file);7wF办公区 - 实用经验教程分享!

    LXZAPI_OutputDebugStr("OnMouseEnterItem:"..f.." mode:"..attr.mode);7wF办公区 - 实用经验教程分享!

    if attr.mode == "file" and (ext=="png" or ext=="PNG") then --如果是图片文件7wF办公区 - 实用经验教程分享!

    LXZAPI_OutputDebugStr("OnMouseEnterItem:"..f.." ext:"..ext.." mode:"..attr.mode);7wF办公区 - 实用经验教程分享!

    local wnd = root:GetLXZWindow ("folders:show picture");7wF办公区 - 实用经验教程分享!

    HelperSetWindowPictureFile(wnd,f);7wF办公区 - 实用经验教程分享!

    wnd:Show();7wF办公区 - 实用经验教程分享!

    HelperCoroutine(function(thread)7wF办公区 - 实用经验教程分享!

    AddWndUpdateFunc(wnd, EffectFaceOut, {from=255, End=200,step=3, old=255, hide=true}, thread);7wF办公区 - 实用经验教程分享!

    coroutine.yield();7wF办公区 - 实用经验教程分享!

    local texture = ILXZTexture:GetTexture(f);7wF办公区 - 实用经验教程分享!

    if texture then7wF办公区 - 实用经验教程分享!

    texture:RemoveTexture();7wF办公区 - 实用经验教程分享!

    end7wF办公区 - 实用经验教程分享!

    end);7wF办公区 - 实用经验教程分享!

    endend7wF办公区 - 实用经验教程分享!

    表现如下7wF办公区 - 实用经验教程分享!

    7wF办公区 - 实用经验教程分享!

    如何使用100行lua代码实现简单目录浏览器7wF办公区 - 实用经验教程分享!

  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!7wF办公区 - 实用经验教程分享!


    标签: 浏览器软件设计使用实现简单

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号