local leishen = {}
local function showEffect(msgID, p1, p2, p3, msgData)
local data = SL:JsonDecode(msgData, false) or {}
SL:print("特效数据", data)
local num = data.num or 0
local eff1, eff2 = data.preEff, data.startEff
-- 创建父节
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-03-24 14:53:37 |
👁️ 阅读: 9
看了你的代码,我发现几个问题导致 `image6` 没有显示:
1. **父节点层级问题**:你在多个地方创建了 `sceneLayer` 容器,导致组件可能被覆盖或创建到错误的父节点上。
2. **路径问题**:图片路径 `"res/er dalu/leishen/jdt/leishen.png"` 中间有空格,需要确认这个路径是否正确。
3. **坐标设置**:`GUI:Image_Create(sceneLayer, "Image_6", 0, 0, ...)` 创建在 (0,0) 位置,可能在屏幕外。
这是修改后的关键部分:
```lua
-- 在showEffect函数中,创建image6时设置正确位置
local image6 = GUI:Image_Create(sceneLayer, "Image_6",
obj.posX - 50, obj.posY - 50, "res/er dalu/leishen/jdt/leishen.png")
GUI:setVisible(image6, true)
GUI:setContentSize(image6, 100, 100) -- 设置合适的大小
GUI:setAnchorPoint(image6, 0.5, 0.5) -- 设置锚点居中
-- 在Button_5点击事件中,确保只创建一个sceneLayer
if GUI:Win_IsNotNull(ui["Button_5"]) then
GUI:addOnClickEvent(ui["Button_5"], function()
SL:print("点击Button_5触发特效")
GUI:delayTouchEnabled(ui["Button_5"], 0.2)
-- 先关闭所有窗口
GUI:Win_CloseAll()
-- 创建唯一的特效容器
local sceneLayer = GUI:Win_Create("EffectLayer", 0, 0, 0, 0,
false, false, true, false, false, false, 1)
-- 获取屏幕中心位置
local screenWidth = SL:GetMetaValue("SCREEN_WIDTH") or 1280
local screenHeight = SL:GetMetaValue("SCREEN_HEIGHT") or 720
local centerX = screenWidth / 2
local centerY = screenHeight / 2
-- 创建image6在屏幕中心
local image6 = GUI:Image_Create(sceneLayer, "Image_6",
centerX - 100, centerY - 100, "res/er dalu/leishen/jdt/leishen.png")
GUI:setVisible(image6, true)
GUI:setContentSize(image6, 200, 200)
GUI:setAnchorPoint(image6, 0.5, 0.5)
-- 创建进度条
local loadingBar = GUI:LoadingBar_Create(image6, "LoadingBar_1",
0, 0, "res/er dalu/leishen/jdt/1.png", 0)
GUI:setContentSize(loadingBar, 180, 20)
GUI:LoadingBar_setPercent(loadingBar, 100)
-- 其他代码...
end)
end
```
主要修改点:
1. 确保 `image6` 创建在正确的位置(屏幕中心)
2. 设置合适的大小和锚点
3. 避免重复创建 `sceneLayer` 容器
4. 检查图片路径是否正确(注意路径中的空格)
如果还是无法显示,可以先用一个已知存在的图片路径测试,比如 `"res/public/1900000610.png"`。
看了你的代码,我发现几个问题导致 `image6` 没有显示:
1. **父节点层级问题**:你在多个地方创建了 `sceneLayer` 容器,导致组件可能被覆盖或创建到错误的父节点上。
2. **路径问题**:图片路径 `"res/er dalu/leishen/jdt/leishen.png"` 中间有空格,需要确认这个路径是否正确。
3. **坐标设置**:`GUI:Image_Create(sceneLayer, "Image_6", 0, 0, ...)` 创建在 (0,0) 位置,可能在屏幕外。
这是修改后的关键部分:
```lua
-- 在showEffect函数中,创建image6时设置正确位置
local image6 = GUI:Image_Create(sceneLayer, "Image_6",
obj.posX - 50, obj.posY - 50, "res/er dalu/leishen/jdt/leishen.png")
GUI:setVisible(image6, true)
GUI:setContentSize(image6, 100, 100) -- 设置合适的大小
GUI:setAnchorPoint(image6, 0.5, 0.5) -- 设置锚点居中
-- 在Button_5点击事件中,确保只创建一个sceneLayer
if GUI:Win_IsNotNull(ui["Button_5"]) then
GUI:addOnClickEvent(ui["Button_5"], function()
SL:print("点击Button_5触发特效")
GUI:delayTouchEnabled(ui["Button_5"], 0.2)
-- 先关闭所有窗口
GUI:Win_CloseAll()
-- 创建唯一的特效容器
local sceneLayer = GUI:Win_Create("EffectLayer", 0, 0, 0, 0,
false, false, true, false, false, false, 1)
-- 获取屏幕中心位置
local screenWidth = SL:GetMetaValue("SCREEN_WIDTH") or 1280
local screenHeight = SL:GetMetaValue("SCREEN_HEIGHT") or 720
local centerX = screenWidth / 2
local centerY = screenHeight / 2
-- 创建image6在屏幕中心
local image6 = GUI:Image_Create(sceneLayer, "Image_6",
centerX - 100, centerY - 100, "res/er dalu/leishen/jdt/leishen.png")
GUI:setVisible(image6, true)
GUI:setContentSize(image6, 200, 200)
GUI:setAnchorPoint(image6, 0.5, 0.5)
-- 创建进度条
local loadingBar = GUI:LoadingBar_Create(image6, "LoadingBar_1",
0, 0, "res/er dalu/leishen/jdt/1.png", 0)
GUI:setContentSize(loadingBar, 180, 20)
GUI:LoadingBar_setPercent(loadingBar, 100)
-- 其他代码...
end)
end
```
主要修改点:
1. 确保 `image6` 创建在正确的位置(屏幕中心)
2. 设置合适的大小和锚点
3. 避免重复创建 `sceneLayer` 容器
4. 检查图片路径是否正确(注意路径中的空格)
如果还是无法显示,可以先用一个已知存在的图片路径测试,比如 `"res/public/1900000610.png"`。
← 返回问答库