Dream Mod 3.0Dream Mod 3.0
首页
快速开始
资源库
首页
快速开始
资源库
  • 进度

    • 更新日志
  • 指南

    • 快速上手
    • App.lua
    • Server.lua
    • 地图
    • 角色
    • 道具
    • 技能
    • 状态
    • 窗口
    • 成长
    • DmTcpClient
    • WebSocketClient
    • SqliteDB
    • 皮肤
    • 自定义组件
  • Api

    • 引擎
    • 地图
    • 角色
    • 道具
    • 技能
    • 状态
    • 窗口
    • 自定义组件
    • 音乐
    • 缓动
    • 全局
  • 控件

    • 标签
    • 按钮
    • 图片框
    • 动画框
    • 模型框
    • 文本框
    • 进度条
    • 技能格子
    • 快捷格子
    • 包裹格子
    • 道具格子
    • 角色框
    • 选择框
    • 选择夹
    • 容器
    • 地图框
    • 滑块条
    • 滚动条
    • 组合框
    • 输入框
    • 列表框
  • 组件

    • 文本
    • 艺术字
    • 精灵
    • 矩形
    • 圆形
    • 动画
    • 模型
  • 其他

    • 丰富文本
    • 模板变量
    • 资源格式
    • 游戏盒子
    • 资源列表
  • 自定义功能

    • 战斗血液效果
    • 地图天气
  • 列表框

    配置项

    名称 类型 必填 说明
    类型 文本true固定值: 表示这是一个列表框控件
    名称 文本true窗口中唯一标识
    x 整数false默认显示坐标x
    y 整数false默认显示坐标y
    宽度 整数false
    高度 整数false
    图标组 table {图片资源}false{ "图标1","图标2",...}
    表头 table {}false{ {标题,宽度,图标模式,对齐},{标题,宽度,图标模式,对齐},...}
    表项 table {}false{数据1,数据2,...},通常与表头一一对应,如果成员数量超出表头数量,不会显示,可以利用此特性作为表项额外标识
    列宽可调 逻辑false鼠标是否可以在表头拖拽改变列宽
    多选模式 逻辑false是否允许多选
    文件拖放 逻辑false是否接收从windows文件夹拖放文件事件
    表头默认背景色 RGBAfalse
    表头默认文本色 RGBAfalse
    表项默认背景色 RGBAfalse
    表项焦点背景色 RGBAfalse
    表项选中背景色 RGBAfalse
    表项默认文本色 RGBAfalse
    表项焦点文本色 RGBAfalse列表行获得焦点时的文本颜色;Heimei-EG-lua ver-1 起,A=0 表示不覆盖富文本原色
    表项选中文本色 RGBAfalse列表行处于选中状态时的文本颜色;Heimei-EG-lua ver-11 起,A=0 表示不覆盖富文本原色
    边框色 RGBAfalse
    背景色 RGBAfalse
    网格色 RGBAfalse
    边框宽度 整数false
    圆角半径 整数false
    圆角边数 整数false
    表头高度 整数false
    表项高度 整数false
    字体 文本false
    附加 tablefalse自定义变量
    默认可视 逻辑false默认是否显示
    系统事件 tablefalse
    {
    
        名称 = "列表框1",
    
        类型 = "列表框",
    
        默认可视 = true,
    
        x = 10,
    
        y = 40,
    
        宽度 = 240,
    
        高度 = 240,
    
        列宽可调 = true,
    
        多选模式 = true,
    
        文件拖放 = true,
    
        表头 = {{"名称",80},{"序号",80},{"偏移X",40},{"偏移Y",40}},
    
        表项 = {
    
            {"玩家1",1,0,0,"测试"},
    
            {"玩家2",2,0,0},
    
            {"玩家3",3,0,0},
    
            {"玩家4",4,0,0},
    
            {"玩家5",1,0,0},
    
        },
    
        系统事件 = { 
    
            点击 = function(列表框对象,行号,列号,键值,功能键)
    
                调试输出(行号)
    
            end,
    
            选中 = function(列表框对象,行号)
    
                调试输出(列表框对象.表项[行号])
    
            end,
    
            编辑 = function(列表框对象,行号,列号,结果)
    
                if (列号 == 1) then
    
                    return true -- 只允许编辑第一列
    
                end
    
            end,
    
            接收文件 = function(列表框对象,文件组)
    
                local 项目组 = {}
    
                for n =1,#文件组 do
    
                    table.insert(项目组,{文件组[n],0,0,0})
    
                end
    
    
    
                列表框对象.重置(nil,项目组) -- 表头  表项
    
            end,
    
        }
    
    }
    

    表项焦点文本色

    设置列表行获得焦点时使用的文本颜色。

    Heimei-EG-lua ver-1 起,当该颜色的透明度 A 为 0 时,富文本单元格不再用焦点文本色覆盖标题,而是继续显示各文字段自身的原始颜色。例如标题中的 #R 红色或其他富文本颜色,在焦点触发后保持不变。

    表项焦点文本色 = RGBA(255,255,255,0), -- A=0:焦点时保留标题原色
    
    • 只判断 A 是否为 0,RGB 分量可以使用其他值。
    • A 为 1 到 255 时,仍按原行为使用焦点文本色覆盖标题。
    • 表项焦点背景色是独立配置,不会触发本规则。
    • 行同时处于焦点和选中状态时,焦点规则优先;焦点文本色 A=0 时仍保留各文字段原色。
    • 使用修改颜色设置单元格独立颜色时,颜色表第二项是该单元格的焦点文本色;它仍具有原有优先级。第二项 A=0 时保留原色,A>0 时覆盖控件级焦点文本色。
    • 本扩展作用于富文本单元格;列表按钮文字、手工插入的旧文本节点及其他控件不在本次改动范围内。

    表项选中文本色

    设置列表行处于选中状态且不在焦点行时使用的文本颜色。

    Heimei-EG-lua ver-11 起,当该颜色的透明度 A 为 0 时,富文本单元格不再用选中文本色覆盖标题,而是继续显示各文字段自身的原始颜色。行为与表项焦点文本色的 A=0 规则一致。

    表项选中文本色 = RGBA(255,255,255,0), -- A=0:选中时保留标题原色
    
    • 只判断 A 是否为 0,RGB 分量不参与是否保留原色的判断。
    • A 为 1到255时,仍按原行为使用选中文本色覆盖富文本标题。
    • 表项选中背景色保持独立,文本色 A=0 不会取消或改变选中背景。
    • 行同时处于焦点和选中状态时仍沿用焦点优先级,最终按表项焦点文本色规则处理。
    • 使用修改颜色设置单元格独立颜色时,颜色表第三项是该单元格的选中文本色;第三项 A=0 时同样保留原色。
    • 本扩展仅作用于富文本单元格,不改变列表按钮文字、手工旧文本节点或其他控件。

    图标组

    设置一个图片资源数组,当表头设置列为图标时,表项数值显示对应的图片。

    图标组 = {"icon_box","icon_eye","icon_disable"},
    
    

    表头

    成员类型说明
    标题文本表头显示的内容
    宽度文本表头的宽度
    图标模式逻辑可选
    对齐模式整数文本模式下 0:左对齐,1:居中对齐,2:右对齐
    图标模式下 0:绘制分隔线 1:隐藏分隔线
    按钮列标记文本可选第五项;值为按钮且图标模式未启用时,该列按按钮单元格绘制
    表头 = {{"",24,true,1},{"名称",220,1},{"X",50,2},{"Y",50,2}}, -- 第一列是图标模式
    
    

    按钮列与点击间隔(Heimei-EG-lua ver-10)

    表头第五项设为按钮后,对应表项可以传入按钮配置 table。按钮配置的点击间隔格式为{毫秒间隔时间, 遮罩模式};未配置时等价于{0,0},不会启用冷却。

    表头 = {
        { '物品', 180 },
        { '操作', 80, false, 1, '按钮' },
    }
    
    列表框对象.加入项目({
        '钢手镯',
        {
            标题 = '购买',
            宽度 = 64,
            高度 = 24,
            点击间隔 = { 1000, 2 },
        },
    })
    
    系统事件 = {
        按钮点击 = function(列表框对象, 行号, 列号, 标题)
            调试输出('按钮点击', 行号, 列号, 标题)
        end,
    }
    
    • 点击间隔[1] > 0时,第一次有效点击会在调用按钮点击前记录截止时间;截止前该单元格的按钮不可再次触发按钮点击。
    • 第二项为遮罩模式:0 不绘制遮罩,1 是转圈遮罩,2 从左往右消退,3 从右往左消退,4 从上往下消退;table 第二项省略或传入其他值时按模式 0。模式 0 只取消视觉遮罩,不取消第一项设置的点击冷却。
    • 每个行列单元格独立保存冷却,不会因按钮皮肤池复用而串到其他行;滚出可视区后仍按引擎运行时间到期。
    • 冷却期间按钮显示原生矩形进度遮罩,遮罩按该单元格按钮的当前宽高更新;同一池化按钮绘制下一行时会立即重置显示状态。
    • 点击间隔缺省、table 第一项为 0/负数/非数值时按 0 处理;为兼容 ver-8,旧的单独数值仍按模式 1 读取;禁用 = true仍优先禁止按钮回调。
    • 冷却只抑制按钮点击事件。列表框原有的通用点击事件仍按原规则触发,便于保留行选择和列表交互。
    • ver-10 将列表冷却截止时间保存在稳定的表项按钮配置 table,而不是可能因刷新/轮回复用暂为空的绘制 cell。焦点行和按钮配置仍有效时,即使绘制 cell 为 nil,按钮点击也会照常触发;列表通用点击事件保持原规则。

    属性

    可视

    • 类型:逻辑
    • 读写:读写
    • 说明:是否显示控件

    父窗口

    • 类型:窗口对象
    • 读写:只读
    • 说明:控件的父窗口对象

    名称

    • 类型:文本
    • 读写:只读
    • 说明:控件的名称。

    x

    • 类型:数值
    • 读写:读写
    • 说明:坐标x。

    y

    • 类型:数值
    • 读写:读写
    • 说明:坐标y。

    次序

    • 类型:数值
    • 读写:读写
    • 说明:动态改变控件的显示层级,值越大越先显示。

    宽度

    • 类型:数值
    • 读写:读写
    • 说明:读写列表框宽度。

    高度

    • 类型:数值
    • 读写:读写
    • 说明:读写列表框高度。

    表项

    • 类型:table
    • 读写:只读
    • 说明:列表框中当前的表项数据,只读取,不要直接修改。

    选中项

    • 类型:table
    • 读写:只读
    • 说明:列表框中当前的选中的行数组。

    位置

    • 类型:整数
    • 读写:读写
    • 说明:列表框垂直滚动条的位置。
    列表框对象.位置 = 0 -- 显示到第一行
    
    

    附加

    • 类型:table
    • 读写:读写
    • 说明:读写控件的附加信息。

    方法

    加入项目

    加入项目
    说明:往列表框中动态加入表项。
    参数名称 值的类型 是否必填 说明描述
    表项数据 tabletrue列的位置与表头对应

    示例

    local 位置 = 列表框对象.加入项目({"玩家1","战士",42})
    
    列表框对象.选中项目(位置)
    
    
    返回值 值的类型 说明描述
    行号 整数返回新加入的项目位置

    修改项目

    修改项目
    说明:修改指定行列的数据。
    参数名称 值的类型 是否必填 说明描述
    行号 整数true
    列号 整数true
    数据 文本true

    示例

    if (#列表框对象.选中项 > 0) then
    
        local 行号 = 列表框对象.选中项[1]
    
        local 原数据 = 列表框对象.表项[行号]
    
        local 原始值 = 原数据[3]
    
        列表框对象.修改项目(行号,3,原始值+1)	-- 修改第3列的数据
    
    end
    
    
    返回值 值的类型 说明描述
    结果 逻辑是否修改成功

    修改颜色

    修改颜色
    说明:修改指定行列文本的颜色。
    参数名称 值的类型 是否必填 说明描述
    行号 整数true
    列号 整数true
    颜色表 table {}true默认色,焦点色,选中色

    示例

    列表框对象.修改颜色(行号,列号,{0xffffffff,0x00ff00ff,0x888888ff})
    
    
    返回值 值的类型 说明描述
    结果 逻辑是否修改成功

    删除项目

    删除项目
    说明:从列表框中删除指定的行。
    参数名称 值的类型 是否必填 说明描述
    行号 整数/tabletrue允许传递一个行号数组批量删除

    示例

    列表框对象.删除项目(1)
    
    列表框对象.删除项目({2,3,4})
    
    

    选中项目

    选中项目
    说明:选中指定行。
    参数名称 值的类型 是否必填 说明描述
    行号 整数/tabletrue允许传递一个行号数组批量选中

    示例

    列表框对象.选中项目({1,3,6,10})
    
    

    重置

    重置
    说明:重置列表框的表头和项目。
    参数名称 值的类型 是否必填 说明描述
    表头 tablefalse填nil时,表头不变,格式同配置项
    表项 tablefalse格式同配置项

    示例

    列表框对象.重置({{"名称",80},{"职业",80},{"等级",80}},{{"玩家1","战士",10},{"玩家2","法师",10},{"玩家3","牧师",10}}) -- 表头  表项
    
    

    加入事件

    加入事件
    说明:往控件中加入一个自定义事件。
    参数名称 值的类型 是否必填 说明描述
    事件名称 文本true触发的事件名称
    附加信息 tablefalse事件触发时可以取出
    延迟时间 数值false延迟执行
    自动销毁 逻辑false是否只执行一次,默认:true

    示例

    系统事件 = {
    
    
    
        创建 = function(列表框对象)
    
            列表框对象.加入事件("延迟触发",{},500)
    
        end,
    
    
    
        延迟触发 = function (列表框对象,tbl,dt,time)
    
            调试输出("触发了")
    
        end,
    
    
    
    }
    
    

    删除事件

    删除事件
    说明:删除指定自定义事件。
    参数名称 值的类型 是否必填 说明描述
    事件名称 文本true

    示例

    系统事件 = {
    
        创建 = function(列表框对象)
    
            列表框对象.加入事件("倒计时",{计次=10},1000,false)
    
        end,
    
    
    
        倒计时 = function (列表框对象,tbl,dt,time)
    
            tbl.计次 = tbl.计次 - 1
    
            if (tbl.计次 == 0) then
    
                列表框对象.删除事件("倒计时")
    
                调试输出("起飞!")
    
                return
    
            end
    
            调试输出("倒计时 " .. tbl.计次 .. "秒")
    
        end,
    
    }
    
    

    系统事件

    🔹 创建

    创建时触发

    回调参数 类型 说明描述
    列表框对象 列表框组件

    示例

    系统事件 = {
    
        创建 = function(列表框对象)
    
            调试输出(列表框对象.名称)
    
        end
    
    }
    
    

    🔹 点击

    • 鼠标点击时触发。
    回调参数 类型 说明描述
    列表框对象 列表框组件
    行号 整数
    列号 整数
    键值 整数 0:左键 1:右键 2:中键。
    功能键 整数 1:Ctrl 2:Shift 3:Alt 是否处于按下状态

    示例

    系统事件 = {
    
        点击 = function(列表框对象,行号,列号,键值,功能键)
    
            if (键值 == 1) then
    
                if (行号 > 0) then
    
                    引擎.弹出菜单("列表菜单",{列表框=列表框对象,行号=行号})
    
                end
    
            end
    
        end,
    
    }
    
    

    🔹 选中

    • 列表项被选中时触发。
    回调参数 类型 说明描述
    列表框对象 列表框组件
    行号 整数

    示例

    系统事件 = {
    
        选中 = function(列表框对象,行号)
    
            调试输出(列表框对象.表项[行号])
    
        end,
    
    }
    
    

    🔹 编辑

    • 鼠标双击表项数据时触发编辑事件。
    • 结果为nil时,表示触发准备编辑事件 返回 true 表示允许编辑。
    • 结果为string时,表示获得编辑结果,还可以通过返回值修改。
    回调参数 类型 说明描述
    列表框对象 列表框组件
    行号 整数
    列号 整数
    结果 nil/文本 nil:准备编辑 文本:已经编辑后的结果

    示例

    系统事件 = {
    
        编辑 = function(列表框对象,行号,列号,结果)
    
            if (结果 == nil) then	-- 表示准备编辑
    
                if (列号 == 3 or 列号 == 4) then
    
                    return true  -- 返回 true 表示允许编辑
    
                end
    
            else -- 表示编辑结束
    
                结果 = tonumber(结果)
    
                if (结果 < 0) then
    
                    结果 = 0
    
                end
    
                return 结果 
    
            end
    
        end,
    
    }
    
    

    🔹 接收文件

    • 接收到文件拖放事件时触发。
    回调参数 类型 说明描述
    列表框对象 列表框组件
    文件组 文本 {}接收到的文件数组

    示例

    系统事件 = {
    
        接收文件 = function(列表框对象,文件组)
    
            local 项目组 = {}
    
            for n =1,#文件组 do
    
                table.insert(项目组,{文件组[n],0,0,0})
    
            end
    
    
    
            列表框对象.重置(nil,项目组) -- 表头  表项
    
        end,
    
    }
    
    

    富文本道具固定格子(Heimei-EG-lua ver-5)

    local 道具 = 引擎.窗口.包裹窗口.角色包裹1.取出物品(1, 6)
    列表框.加入项目({
        引擎.富文本道具(道具.名称, 道具.数量, nil, nil, 道具, 34),
    })
    

    第六参数 34 表示 34×34 虚拟格子,参与排版、图标/效果绘制、数量定位和热点判断。ver-7 起,34 是直接传给原生道具格绘制规则的目标尺寸,不再以系统底图的实际纹理宽高换算:小图标保持原尺寸,超限静态素材才等比缩小。列表框保留自身的留白与滚动裁剪,建议行高至少为 38。

    富文本道具的动画节点不再与背包、装备栏或其他单元格共用,多个同款道具也独立定位。常规无旋转、正缩放精灵/帧动画裁剪到格子范围;复杂旋转、翻转和非批绘制组件仍使用原生行为。详情见丰富文本 - #item。本版不处理混合显示;机器隔离验证通过,实机待测。

    更新记录

    Heimei-EG-lua ver-6 修复固定富文本道具在“加入项目”返回后的首帧绘制退出。列表参数不需要调整,继续使用上面的六参数调用;内部裁剪改为整数纹理像素。真实 App.exe 离线对照通过,完整前端视觉与交互仍需复测。

    Heimei-EG-lua ver-7 修复格子效果底图大小不一致及小道具图标看似被放大的问题。格子效果存在时按原生规则由效果列表负责完整图层,不再在末尾重复绘制主图标;列表热点与标准道具气泡仍绑定 34×34 虚拟格子。

    日期版本简易记录
    2026-09-10Heimei-EG-lua ver-1新增列表框富文本单元格的透明焦点色规则:表项焦点文本色的 A=0 时不覆盖标题原色;用户实机验证通过。
    2026-09-10Heimei-EG-lua ver-5支持富文本道具第六参数控制虚拟格子大小,统一热点与滚动定位;隔离动画节点,保留透明焦点色规则。
    2026-09-10Heimei-EG-lua ver-6修复固定富文本道具首帧裁剪绘制退出;加入项目、透明焦点色及滚动热点逻辑不变。
    2026-09-10Heimei-EG-lua ver-7对齐原生道具格尺寸规则,修复系统底图误缩放效果层与主图标重复绘制;热点气泡继续使用虚拟格子。
    2026-09-11Heimei-EG-lua ver-8列表按钮单元格支持点击间隔;按单元格隔离截止时间,冷却期间阻止重复按钮点击并显示随按钮尺寸更新的 CD 遮罩。
    2026-09-11Heimei-EG-lua ver-9尝试保护空 cell 并支持 4 种遮罩;用户实机确认虽不再报错,但轮回殿按钮列因空 cell 被直接跳过而不触发按钮点击,由 ver-10 修订。
    2026-09-11Heimei-EG-lua ver-10冷却状态改存按钮配置 table,修复空绘制 cell 导致列表按钮回调丢失;新增模式 0 无遮罩并设为 table 第二项默认值。
    2026-09-11Heimei-EG-lua ver-11表项选中文本色的 A=0 时不再覆盖富文本文字段原色;焦点优先级、选中背景色及 A>0 行为不变,机器矩阵验证通过。