local parent = GUI:Win_FindParent(110) 这个是任务框 用cocos 2dx 写一个全屏黑色 聚集到这个地方 只让这个框量 有呼吸效果 可以用cocos 2dx lua的写法! 也可以用API
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-03-28 07:01:50 |
👁️ 阅读: 10
根据浮生梦老师前端课程内容,要实现任务框的聚焦效果,可以使用遮罩层+呼吸动画的方式。以下是完整的实现方案:
```lua
-- 首先获取任务框父节点
local taskParent = GUI:Win_FindParent(110)
if not GUI:Win_IsNull(taskParent) then
-- 1. 创建全屏黑色遮罩层
local screenSize = SL:GetMetaValue("SCREEN_SIZE", "width")
local screenHeight = SL:GetMetaValue("SCREEN_SIZE", "height")
local maskLayer = GUI:Win_Create("TaskFocusMask", 0, 0, screenSize, screenHeight, false, false, true, false, false, false, 1)
GUI:setOpacity(maskLayer, 180) -- 设置半透明黑色
-- 2. 在遮罩层上挖空任务框区域
local taskPos = GUI:getPosition(taskParent)
local taskSize = GUI:getContentSize(taskParent)
-- 创建圆形或矩形挖空区域(这里用矩形示例)
local holeNode = GUI:Widget_Create(maskLayer, "hole_area", taskPos.x, taskPos.y, taskSize.width, taskSize.height)
GUI:setColor(holeNode, 255, 255, 255, 0) -- 完全透明
-- 3. 给任务框添加呼吸效果
local function addBreathEffect(widget)
-- 呼吸动画:缩放+透明度变化
local scaleUp = GUI:ActionScaleTo(0.8, 1.05)
local scaleDown = GUI:ActionScaleTo(0.8, 1.0)
local fadeIn = GUI:ActionFadeTo(0.4, 200)
local fadeOut = GUI:ActionFadeTo(0.4, 255)
-- 组合动画序列
local seq = GUI:ActionSequence(
scaleUp,
fadeIn,
scaleDown,
fadeOut,
GUI:DelayTime(0.2)
)
-- 循环播放
local repeatAction = GUI:ActionRepeatForever(seq)
GUI:runAction(widget, repeatAction)
end
-- 4. 给任务框本身添加呼吸效果
addBreathEffect(taskParent)
-- 5. 可选:添加点击遮罩关闭功能
GUI:addOnClickEvent(maskLayer, function()
GUI:removeFromParent(maskLayer)
GUI:stopAllActions(taskParent) -- 停止呼吸动画
end)
-- 6. 设置遮罩层层级(确保在最上层)
GUI:setLocalZOrder(maskLayer, 9999)
SL:print("任务聚焦效果已开启,点击任意位置关闭")
else
SL:print("未找到任务框父节点")
end
```
**关键点说明:**
1. **遮罩层原理**:创建全屏半透明黑色层,然后在任务框位置创建透明区域,实现"聚光灯"效果
2. **呼吸动画效果**:
- `ActionScaleTo`: 缩放动画
- `ActionFadeTo`: 透明度变化
- `ActionSequence`: 动作序列组合
- `ActionRepeatForever`: 无限循环
3. **交互控制**:点击遮罩层可关闭效果,恢复原状
4. **注意事项**:
- 使用前先检查任务框是否存在
- 动画参数可根据需要调整(0.8秒缩放,0.4秒淡入淡出)
- 遮罩层级设为9999确保在最上层
这个方案完全使用996引擎提供的GUI函数实现,符合前端开发规范。如果需要更复杂的挖空形状(如圆形),可以创建多个矩形组合或使用图片遮罩。
← 返回问答库