local t = GUI:Image_Create(-1, "21", 0, 0, "res/private/npc/bg_zbhstips_01.png")
GUI:addStateEvent(t, function(eventName)
SL:Print("7777777777777", eventName)
end)
GUI:addChild(GUI:Attach_LeftBottom(), t)
SL:ScheduleOnce(funct
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-03 14:55:45 |
👁️ 阅读: 1
这段代码主要展示了**动态创建和定时移除UI元素**的功能,是浮生梦老师前端课程中常见的UI管理技巧。
## 主要作用:
1. **动态创建图片**:使用 `GUI:Image_Create` 创建一个背景图片
2. **添加状态事件监听**:通过 `GUI:addStateEvent` 监听图片的各种状态变化
3. **挂接到界面锚点**:将图片添加到左下角锚点 `GUI:Attach_LeftBottom()`
4. **定时自动移除**:3秒后通过 `GUI:removeChildByID` 移除该图片
## 实际应用场景:
### 1. 临时提示/公告
```lua
-- 创建临时公告
local notice = GUI:Image_Create(-1, "temp_notice", 0, 0, "res/public/1900000610.png")
GUI:addChild(GUI:Attach_Center(), notice)
-- 3秒后自动移除
SL:ScheduleOnce(function()
if not GUI:Win_IsNull(GUI:Attach_Center()) then
GUI:removeChildByID(GUI:Attach_Center(), "temp_notice")
end
end, 3)
```
### 2. 战斗飘字/特效
```lua
-- 创建伤害数字
local damageText = GUI:Text_Create(-1, "damage_123", 100, 200, 24, "#ff0000", "-999")
GUI:addChild(GUI:Attach_LeftBottom(), damageText)
-- 1秒后移除
SL:ScheduleOnce(function()
GUI:removeChildByID(GUI:Attach_LeftBottom(), "damage_123")
end, 1)
```
### 3. 按钮点击反馈
```lua
local button = GUI:Button_Create(parent, "btn_test", 100, 100, "res/public/1900000612.png")
GUI:addOnClickEvent(button, function()
-- 创建点击特效
local effect = GUI:Image_Create(-1, "click_effect", 0, 0, "res/private/effect/click.png")
GUI:addChild(GUI:Attach_LeftBottom(), effect)
-- 0.5秒后移除特效
SL:ScheduleOnce(function()
GUI:removeChildByID(GUI:Attach_LeftBottom(), "click_effect")
end, 0.5)
end)
```
### 4. 加载动画
```lua
-- 显示加载动画
local loading = GUI:Image_Create(-1, "loading", 0, 0, "res/private/loading.png")
GUI:addChild(GUI:Attach_Center(), loading)
-- 数据加载完成后移除
function onDataLoaded()
GUI:removeChildByID(GUI:Attach_Center(), "loading")
end
```
## 关键点:
- **`GUI:Attach_LeftBottom()`**:获取左下角锚点,类似的还有 `GUI:Attach_Center()`、`GUI:Attach_RightTop()` 等
- **`GUI:removeChildByID(parent, id)`**:通过ID精确移除子节点
- **`SL:ScheduleOnce`**:单次延迟执行,适合定时清理
这种模式在需要**临时显示、自动消失**的UI元素中非常有用,比如提示信息、特效、动画等,避免手动管理这些临时对象的生命周期。
← 返回问答库