近期遇到有用户来问为啥助手调试的时候有UI多配置的功能,但是打包小精灵之后就没有了?打包出来的小精灵是没有附带多配置的功能的,得要自己用界面事件来实现
虽然实现并不复杂,但是对于新手来说可能会没啥头绪,所以写了个简单的范例以供新手参考
实现的功能如下:
1、配置的保存和加载
2、支持新增和删除配置
3、支持保存多个配置方案列表
效果图:

下面是ui界面代码
界面1:
{
脚本配置管理:
{
水平布局:
{
文字框:
{
名称:"文字框1",
显示内容:"当前配置:",
文字大小:0,
高度:0,
宽度:0,
注释:"文字大小、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性"
},
下拉框:
{
名称:"配置方案",
选择响应:"函数名1",
选项:["配置一","配置二"],
初始选项:0,
注释:"初始选项是可选属性,默认值为0。模版中设置了三个选项,您可以根据需要增加或减少,注意各选项之间用逗号分隔。"
},
按钮:
{
名称:"按钮2",
显示内容:"加载配置列表",
点击响应:"LoadConfigList",
文字大小:0,
高度:0,
宽度:0,
注释:"文字大小、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性"
},
},
水平布局:
{
按钮:
{
名称:"保存配置",
显示内容:"保存配置",
点击响应:"SaveConfig",
文字大小:0,
高度:0,
宽度:0,
注释:"文字大小、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性"
},
按钮:
{
名称:"加载配置",
显示内容:"加载配置",
点击响应:"LoadConfig",
文字大小:0,
高度:0,
宽度:0,
注释:"文字大小、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性"
},
},
水平布局:
{
按钮:
{
名称:"添加配置",
显示内容:"添加配置",
点击响应:"AddConfig",
文字大小:0,
高度:0,
宽度:0,
注释:"文字大小、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性"
},
按钮:
{
名称:"删除配置",
显示内容:"删除配置",
点击响应:"DelConfig",
文字大小:0,
高度:0,
宽度:0,
注释:"文字大小、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性"
},
},
文字框:
{
名称:"文字框2",
显示内容:"======================================",
文字大小:0,
高度:0,
宽度:0,
注释:"文字大小、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性"
},
输入框:
{
名称:"输入框1",
提示内容:"提示用户应该输入什么内容",
初始文本:"",
仅输入数字:false,
密码:false,
文字大小:0,
最大输入长度:0,
高度:0,
宽度:0,
注释:"初始文本、文字大小、最大输入长度、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性"
},
多选框:
{
名称:"多选框1",
提示内容:"提示用户的文字内容",
点击响应:"函数名1",
选中:false,
文字大小:0,
高度:0,
宽度:0,
注释:"文字大小、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性"
},
下拉框:
{
名称:"下拉框2",
选择响应:"函数名1",
选项:["选项1","选项2","选项3"],
初始选项:0,
注释:"初始选项是可选属性,默认值为0。模版中设置了三个选项,您可以根据需要增加或减少,注意各选项之间用逗号分隔。"
},
},
}
// 获取当前使用的配置名
Function GetCurrentConfig()
Dim CurrentConfig = UIP.GetAttribute("配置方案")
Dim ConfigName = CurrentConfig["选项"][CurrentConfig["初始选项"] + 1]
GetCurrentConfig = ConfigName
End Function
// 删除数组元素
Function DelArray(t, idx)
Dim temp = {null}
For i = 1 To Len(t)
If i <> idx Then
temp[Len(temp) + 1] = t[i]
End If
Next
DelArray = temp
End Function
// 加载配置方案列表
Function LoadConfigList()
Dim Config = {null}
Dim CurrentConfig = UIP.GetAttribute("配置方案")
Dim ConfigPath = GetSdcardDir() & "/UI_Config.json"
If Dir.Exist(ConfigPath) = 1 Then
Config = Encode.JsonToTable(File.Read(ConfigPath))
UIP.SetAttribute("配置方案", {"选项": Config["配置方案列表"]})
End If
End Function
// 添加配置方案
Function AddConfig()
Dim ConfigName = Dialog.InputBox("输入新配置的名称")
If ConfigName <> "" Then
Dim Config = {null}
Dim ConfigPath = GetSdcardDir() & "/UI_Config.json"
If Dir.Exist(ConfigPath) = 1 Then
Config = Encode.JsonToTable(File.Read(ConfigPath))
End If
// 在控件上添加新的方案名称,并保存到配置文件中
Dim CurrentConfig = UIP.GetAttribute("配置方案")
CurrentConfig["选项"][Len(CurrentConfig["选项"]) + 1] = ConfigName
CurrentConfig["初始选项"] = Len(CurrentConfig["选项"]) - 1
UIP.SetAttribute "配置方案", CurrentConfig
Config["配置方案列表"] = CurrentConfig["选项"]
Call File.Write(ConfigPath, Encode.TableToJson(Config))
End If
End Function
// 删除配置方案
Function DelConfig()
Dim Config = {null}
Dim ConfigPath = GetSdcardDir() & "/UI_Config.json"
If Dir.Exist(ConfigPath) = 1 Then
Config = Encode.JsonToTable(File.Read(ConfigPath))
Dim ConfigName = GetCurrentConfig()
If Config["配置方案列表"] Then
// 遍历方案列表,删除当前名称的方案
For i = 1 To Len(Config["配置方案列表"])
If Config["配置方案列表"][i] = ConfigName Then
Config["配置方案列表"] = DelArray(Config["配置方案列表"], i)
Exit For
End If
Next
End If
// 删除对应方案的配置信息,并保存到文件中
If Config["ConfigName"] Then
Config["ConfigName"] = null
End If
Call File.Write(ConfigPath, Encode.TableToJson(Config))
Call LoadConfigList()
End If
End Function
// 保存控件
Function SaveConfig()
Dim Config = {null}
Dim ConfigPath = GetSdcardDir() & "/UI_Config.json"
If Dir.Exist(ConfigPath) = 1 Then
Config = Encode.JsonToTable(File.Read(ConfigPath))
End If
Dim ConfigName = GetCurrentConfig()
// 添加控件信息到TempConfig键值表中
Dim TempConfig = {null}
TempConfig["输入框1"] = UIP.GetAttribute("输入框1")
TempConfig["多选框1"] = UIP.GetAttribute("多选框1")
TempConfig["下拉框2"] = UIP.GetAttribute("下拉框2")
// 把当前界面的控件信息存入对应方案名称的配置键值表中并保存到文件
Config[ConfigName] = TempConfig
Call File.Write(ConfigPath, Encode.TableToJson(Config))
End Function
// 加载控件
Function LoadConfig()
Dim Config = {null}
Dim ConfigPath = GetSdcardDir() & "/UI_Config.json"
If Dir.Exist(ConfigPath) = 1 Then
Config = Encode.JsonToTable(File.Read(ConfigPath))
End If
Dim ConfigName = GetCurrentConfig()
If Config[ConfigName] Then
Dim TempConfig = Config[ConfigName]
// 加载控件配置
UIP.SetAttribute("输入框1", TempConfig["输入框1"])
UIP.SetAttribute("多选框1", TempConfig["多选框1"])
UIP.SetAttribute("下拉框2", TempConfig["下拉框2"])
End If
End Function