-- 隐藏所有小球
for i = 1, 5 do
local widget = ui["Effect_"..i]
if GUI:Win_IsNotNull(widget) then
GUI:setVisible(widget, false)
end
end
-- 显示小球 + 只播放最新一个动画
for i = 1, effectPos do
local widget = ui["Effect_" .. i]
if not GUI:Wi
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-22 22:15:17 |
👁️ 阅读: 13
```lua
-- 隐藏所有小球
for i = 1, 5 do
local widget = ui["Effect_"..i]
if GUI:Win_IsNotNull(widget) then
GUI:setVisible(widget, false)
end
end
-- 显示小球 + 只播放最新一个动画
for i = 1, effectPos do
local widget = ui["Effect_" .. i]
if not GUI:Win_IsNull(widget) then
GUI:setVisible(widget, true)
-- 只给新点亮的播放
if i == effectPos and effectPos ~= zhuansheng.lastEffectPos then
-- 获取当前小球的位置
local pos = GUI:getPosition(widget)
-- 创建并播放特效 ID: 86325
-- 参数说明:
-- widget: 父控件对象(当前小球)
-- "ball_effect": 控件ID
-- pos.x: 横坐标(与小球相同)
-- pos.y: 纵坐标(与小球相同)
-- 0: 特效类型(0表示普通特效)
-- 86325: 特效ID
local effectWidget = GUI:Effect_Create(widget, "ball_effect", pos.x, pos.y, 0, 86325)
-- 小球小幅弹动
GUI:runAction(widget, GUI:ActionSequence(
GUI:ActionScaleTo(0.2, 1.2),
GUI:ActionScaleTo(0.2, 1.0)
))
-- 特效播放完成后自动移除
GUI:Effect_addOnCompleteEvent(effectWidget, function()
if not GUI:Win_IsNull(effectWidget) then
GUI:removeFromParent(effectWidget)
end
end)
end
end
end
```
修改说明:
1. **获取位置**:使用 `GUI:getPosition(widget)` 获取当前小球的位置坐标
2. **位置同步**:将特效创建在相同的 `pos.x, pos.y` 坐标上,确保特效与小球位置一致
3. **特效清理**:添加 `GUI:Effect_addOnCompleteEvent` 事件,特效播放完成后自动移除,避免内存泄漏
4. **参数说明**:注释中详细说明了 `GUI:Effect_Create` 函数的各个参数含义
这样特效就会:
- 只在最新点亮的小球上播放一次
- 跟随小球的位置(Effect_1到Effect_5)
- 播放完成后自动清理
```lua
-- 隐藏所有小球
for i = 1, 5 do
local widget = ui["Effect_"..i]
if GUI:Win_IsNotNull(widget) then
GUI:setVisible(widget, false)
end
end
-- 显示小球 + 只播放最新一个动画
for i = 1, effectPos do
local widget = ui["Effect_" .. i]
if not GUI:Win_IsNull(widget) then
GUI:setVisible(widget, true)
-- 只给新点亮的播放
if i == effectPos and effectPos ~= zhuansheng.lastEffectPos then
-- 获取当前小球的位置
local pos = GUI:getPosition(widget)
-- 创建并播放特效 ID: 86325
-- 参数说明:
-- widget: 父控件对象(当前小球)
-- "ball_effect": 控件ID
-- pos.x: 横坐标(与小球相同)
-- pos.y: 纵坐标(与小球相同)
-- 0: 特效类型(0表示普通特效)
-- 86325: 特效ID
local effectWidget = GUI:Effect_Create(widget, "ball_effect", pos.x, pos.y, 0, 86325)
-- 小球小幅弹动
GUI:runAction(widget, GUI:ActionSequence(
GUI:ActionScaleTo(0.2, 1.2),
GUI:ActionScaleTo(0.2, 1.0)
))
-- 特效播放完成后自动移除
GUI:Effect_addOnCompleteEvent(effectWidget, function()
if not GUI:Win_IsNull(effectWidget) then
GUI:removeFromParent(effectWidget)
end
end)
end
end
end
```
修改说明:
1. **获取位置**:使用 `GUI:getPosition(widget)` 获取当前小球的位置坐标
2. **位置同步**:将特效创建在相同的 `pos.x, pos.y` 坐标上,确保特效与小球位置一致
3. **特效清理**:添加 `GUI:Effect_addOnCompleteEvent` 事件,特效播放完成后自动移除,避免内存泄漏
4. **参数说明**:注释中详细说明了 `GUI:Effect_Create` 函数的各个参数含义
这样特效就会:
- 只在最新点亮的小球上播放一次
- 跟随小球的位置(Effect_1到Effect_5)
- 播放完成后自动清理
← 返回问答库