TitleTips = {}--角色 英雄 面板 称号提示
TitleTips._ui = nil
local tipsWidth = 270
local textSize = 18
function TitleTips.main(data)
local parent = GUI:Attach_Parent()
TitleTips._parent = parent
TitleTips.isWinPlayMode = SL:GetMetaValue("WINPLAYMOD
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-06-02 09:59:33 |
👁️ 阅读: 10
这段代码是一个称号提示界面的Lua实现,主要功能是显示称号的详细信息。让我为你详细解释:
## 主要功能
这是一个称号(或道具)提示面板,当玩家点击称号时显示详细信息,包括:
- 称号名称
- 属性加成
- 剩余时间
- 描述说明
## 核心函数解析:
### 1. **main函数** - 入口函数
```lua
function TitleTips.main(data)
local parent = GUI:Attach_Parent() -- 获取父节点
TitleTips._parent = parent
-- 根据平台调整字体大小
TitleTips.isWinPlayMode = SL:GetMetaValue("WINPLAYMODE")
if TitleTips.isWinPlayMode then
textSize = 16
end
```
创建提示面板的入口,处理平台适配。
### 2. **CreateItemPanel函数** - 创建内容面板
这是核心函数,创建所有显示内容:
```lua
-- 创建背景
local tips = GUI:Layout_Create(TitleTips._panel,"Layout_Tips", 0, 0, 135, 173, false)
GUI:Layout_setBackGroundImage(tips,SLDefine.PATH_RES_PRIVATE .. "item_tips/bg_tipszy_05.png")
-- 创建列表容器
local listView = GUI:ListView_Create(tips,"PlayerListView", 10, 10, 0, 0, 1)
-- 显示称号名称
local rich_name = GUI:RichText_Create(listView, "rich_text", 0, 0, name, tipsWidth, textSize, color)
-- 显示属性
local rich_att = GUI:RichText_Create(listView, "rich_attr", 0, 0, str, tipsWidth, strSize, strColor)
-- 显示剩余时间(如果有)
if time and time > SL:GetMetaValue("SERVER_TIME") then
local richText = GUI:RichText_Create(listView, "rich_time", 0, 0,
string.format("剩余时间:%s",SL:TimeFormatToStr(time - SL:GetMetaValue("SERVER_TIME"))),
width, strSize, strColor)
end
```
### 3. **getTipsAnchorPoint函数** - 智能定位
```lua
function TitleTips.getTipsAnchorPoint(widget, pos, ancPoint)
-- 自动调整提示框位置,确保不会超出屏幕
local size = GUI:getContentSize(widget)
local screenW = SL:GetMetaValue("SCREEN_WIDTH")
local screenH = SL:GetMetaValue("SCREEN_HEIGHT")
-- 检测是否超出屏幕边界并调整锚点
if pos.y + size.height*ancPoint.y > screenH then
ancPoint.y = 1 -- 超出底部,改为上对齐
end
-- ... 其他边界检测
return ancPoint, pos
end
```
这个函数确保提示框始终显示在屏幕内。
### 4. **refreshItemPosition函数** - 动态调整大小
```lua
function TitleTips.refreshItemPosition(tips, listView)
GUI:ListView_doLayout(listView)
local listHeight = GUI:ListView_getInnerContainerSize(listView).height
-- 根据内容动态调整大小
GUI:setContentSize(tips, listWidth + 20, listHeight + 20)
end
```
根据实际内容高度调整提示框大小。
## 使用方式
```lua
-- 显示称号提示
local data = {
id = 称号ID, -- 称号配置ID
pos = GUI:p(100, 200), -- 显示位置
time = 过期时间戳 -- 可选:过期时间
}
TitleTips.main(data)
```
## 特点
1. **平台适配**:PC和手机显示不同字体大小
2. **智能定位**:自动调整位置避免超出屏幕
3. **动态大小**:根据内容自动调整高度
4. **富文本支持**:支持颜色、换行等格式
5. **触摸关闭**:点击空白区域关闭提示
这是一个典型的道具/称号提示界面实现,使用了996引擎的标准GUI组件和布局方式。
← 返回问答库