0

焦点头条

【小雪】插件制作教学系列(二)《无界面插件教学》

2014-02-23 14:51| 查看: 9584 |作者: 小雪

目录分组

目录的分组管理,适用于大型以及动态目录,比上面的固定小型目录要复杂一些。

由于大型的目录很复杂,各种括号什么的很容易出错,修改一个地方可能会牵动到整个目录的架构,所以,为了方便管理与修改,同时方便其他人阅读代码就会将大目录拆分为一个个的小目录。

例如上面的3级目录,就可以按照级别简单拆分为三个部分,方便管理。

第一级目录:

local firstlevelmenu={
{szOption = "发布统计",
szIcon = "ui\\Image\\Minimap\\Minimap.UITex";
nFrame = 185;
szLayer = "ICON_LEFT";}
}

第二级目录:

local secondlevelmenu={
{szOption = "发布",fnAction=function() OutputMessage("MSG_SYS","测试发布功能\n") end},
{szOption = "发布频道"}
}

第三级目录:

local thirdlevelmenu={
{szOption = "近聊频道", bMCheck=true,bCheck=true,bChecked= channel==1,},
{szOption = "小队频道", bMCheck=true,bCheck=true},
{bDevide = true,},
{szOption = "团队频道", bMCheck=true,bCheck=true},
{szOption = "帮会频道", bMCheck=true,bCheck=true},
}

然后使用table.insert命令将目录一层层导入
table.insert(目标表格名字,要导入的表格名字)

从最高级的目录依次向低级导入

table.insert(secondlevelmenu,thirdlevelmenu)
table.insert(firstlevelmenu,secondlevelmenu)

然后发现悲剧了,这个并不是我们想要的。这是因为{}造成的原因。


假设a目录为a={{szOption="测试"}}
b目录为b={{szOption="测试2"}}
例如在a目录中导入b目录后:
a={
{szOption="测试"},
{
    {szOption="测试2"}
}
}

在同一级里面,b目录的第一个szOption为空,所以会出现刚才那种情况。

要解决这种情况的话得一个一个添加目录,如下:
首先建立一个空目录:
local menu={}
在这里导入第一层目录,注意去掉一个{}
table.insert(menu,firstlevelmenu)
然后依次导入第二级目录,因为大括号已经去掉了,所以要导入两次
table.insert(firstlevelmenu,{szOption = "发布",fnAction=function() OutputMessage("MSG_SYS","测试发布功能\n") end})
table.insert(firstlevelmenu,{szOption = "发布频道"})

第三层目录以此类推。
最后Popup最开始建立的空目录即可达到原有的效果。

虽然这种方法麻烦了一些,但是在做大型目录或者动态目录的时候会使用到,主要是这个思路清楚,如果是固定或者小型目录建议还是使用前面介绍的方法。

收藏 分享 邀请

发表评论

查看全部评论(1)
游客 2014-09-26 06:29
<p>1、找到自己最好的微笑,并将它随时奉献给客人。 <br><br>2、愿我的微笑像春风一样温暖着客人的心。 <br><br>3、愿我的每一个微笑都能给您带来一份轻松与快乐! <br><br>4、有了它家庭充满幸福,有了它生意兴隆荣耀,它还是朋友间交流的暗号。 <br><br>5、用我的真诚微笑留住每位客人。 <br><br>6、永远微笑吧!在人生的旅途上,最好的身份证就是——微笑。 <br><br>7、营业员的微笑必须是发自内心的,不能皮笑肉不笑。要出会心 ...
引用

查看全部评论(1)

关注订阅号"剑网3PVE"
获取第一手剑三资讯


您当前使用的浏览器版本过低,网站部分功能可能失效,请更换合适的浏览器。了解更多