local screenWidth = SL:GetMetaValue("SCREEN_WIDTH", 0)
local screenHeight = SL:GetMetaValue("SCREEN_HEIGHT", 0)
local parent = GUI:Win_Create("zhuanpan", 0, 0, screenWidth, screenHeight, false, false, true, false, false, false, 1)
local b
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-05-02 14:59:25 |
👁️ 阅读: 3
这个错误是因为你的 `dier` 变量在 `jieshu()` 函数内部创建时,`GUI:Frames_Create` 的 `parent` 参数可能为 `nil` 或者函数执行时出现了问题,导致创建的对象是 `nil`。
从错误信息来看:
`[LUA-print] LUA ERROR: target is nil value` - 这表示 `GUI:setIgnoreContentAdaptWithSize(dier, false)` 中的 `dier` 是 `nil`。
具体问题分析:
1. **`jieshu()` 函数中的 parent**:你在函数内部使用了外部的 `parent` 变量,但需要确认这个 `parent` 在函数执行时仍然有效
2. **Frames_Create 可能失败**:如果资源路径有问题或者参数不正确,`GUI:Frames_Create` 可能返回 `nil`
修改建议:
```lua
local screenWidth = SL:GetMetaValue("SCREEN_WIDTH", 0)
local screenHeight = SL:GetMetaValue("SCREEN_HEIGHT", 0)
local parent = GUI:Win_Create("zhuanpan", 0, 0, screenWidth, screenHeight, false, false, true, false, false, false, 1)
-- 先检查父节点是否创建成功
if GUI:Win_IsNull(parent) then
SL:Print("父节点创建失败!")
return
end
local bg = GUI:Image_Create(parent, 'bg', 0, 0, 'res/yuding/tianshudonghua/1.png')
GUI:setContentSize(bg, screenWidth, screenHeight)
GUI:setAnchorPoint(bg, 0.5, 0.5)
GUI:setPosition(bg, screenWidth/2, screenHeight/2)
local dier = nil
local function jieshu()
-- 再次检查父节点
if GUI:Win_IsNull(parent) then
SL:Print("父节点已失效")
return
end
dier = GUI:Frames_Create(
parent,
"FullScreenFrames2", -- 修改ID,避免重复
screenWidth/2,
screenHeight/2,
"res/yuding/tianshudonghua/citiao2/1/",
".png",
1,
10,
{speed = 100, count = 10, loop = 1}
)
-- 检查Frames_Create是否成功
if GUI:Win_IsNull(dier) then
SL:Print("第二段动画创建失败!")
return
end
GUI:setAnchorPoint(dier, 0.5, 0.5)
GUI:setContentSize(dier, screenWidth, screenHeight)
GUI:setIgnoreContentAdaptWithSize(dier, false)
SL:Print('第二段动画开始播放')
end
local fullScreenAnim = GUI:Frames_Create(
parent,
"FullScreenFrames1",
screenWidth/2,
screenHeight/2,
"res/yuding/tianshudonghua/fanshuzhen/a",
".png",
1,
35,
{speed = 100, count = 35, loop = 1, callback = jieshu}
)
-- 检查第一段动画是否创建成功
if GUI:Win_IsNull(fullScreenAnim) then
SL:Print("第一段动画创建失败!")
return
end
GUI:setAnchorPoint(fullScreenAnim, 0.5, 0.5)
GUI:setContentSize(fullScreenAnim, screenWidth, screenHeight)
GUI:setIgnoreContentAdaptWithSize(fullScreenAnim, false)
```
**主要修改点:**
1. 增加了 `GUI:Win_IsNull()` 检查,确保节点有效
2. 修改了第二个Frames的ID,避免ID冲突
3. 检查了资源路径是否正确(确保 `res/yuding/tianshudonghua/citiao2/1/` 目录存在图片文件)
4. 添加了详细的错误提示
**常见问题排查:**
1. 检查资源路径是否正确
2. 确认图片文件是否存在(如:1.png, 2.png...10.png)
3. 确保回调函数执行时父节点仍然存在
下次写代码时记得先检查节点是否创建成功,避免操作nil对象!不懂的可以问浮生梦老师!
← 返回问答库