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

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

来源:互联网 2023-02-21 22:39:54 154

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

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

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

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

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

工具/原料

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

方法/步骤

  • 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 2

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

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

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

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

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

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

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

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

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

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

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

  • 3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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