lua前端合成脚本面板练习

淡若初秋学习日记 淡若初秋学习日记 25 人阅读 | 3 人回复 | 2025-04-25

function npc_5()
    SL:Print("打开容器练习NPC")
    --------------------------------------------------------------------------------- 
    
    local parent = GUI:Win_Create("win_1", 0,0,0,0,true, false, true, true,false,5)
    local ww = SL:GetMetaValue("SCREEN_WIDTH")
    local wh = SL:GetMetaValue("SCREEN_HEIGHT")
    local w = ww
    local h = wh
    local x = ww / 2
    local y = wh / 2 
    
    local param = {
        [1] = {scale = 0.4 , img = "res/ly/gdrq/000000.png"},
        [2] = {scale = 0.5 , img = "res/ly/gdrq/000001.png"},
        [3] = {scale = 0.6 , img = "res/ly/gdrq/000002.png"},
        [4] = {scale = 1.0 , img = "res/ly/gdrq/000003.png"},
        [5] = {scale = 0.6 , img = "res/ly/gdrq/000004.png"},
        [6] = {scale = 0.5 , img = "res/ly/gdrq/000005.png"},
        [7] = {scale = 0.4 , img = "res/ly/gdrq/000006.png"},
        
    }
    local rq_gd = GUI:RotateView_Create(parent, "xuanzhuan1", x, y, w, 500, 200,param)
    
    
    
    for i = 1 , #param do
        local function CallFunc()
            SL:Print("动作执行完毕")
        end

        local item = GUI:RotateView_getItemByIndex(rq_gd, i)
        local itemsize = GUI:getContentSize(item)
        local ly_1 = GUI:Layout_Create(item, "click", 0, 0, itemsize.width, itemsize.height)
        -- GUI:Layout_debug(ly_1)
        GUI:setTouchEnabled(ly_1, true)
        GUI:setSwallowTouches(ly_1, false)
        GUI:addOnClickEvent(ly_1, function ()
            SL:Print("第" ..i .. "个下标")
            GUI:runAction(item, GUI:ActionSequence(GUI:ActionBlink(1, 2), GUI:CallFunc(CallFunc)))
        end)

    end
    

    
    --注册关闭按钮点击事件
    local close = GUI:Button_Create(parent, "btn_close",800,608, "res/public/1900000511.png") --添加关闭按钮
    GUI:addOnClickEvent(close, function()
        GUI:Win_Close(parent) -- 关闭父节点
    end)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    --------------------------------------------------------------------------------- 
end



分享到:

回答|共 3 个

骤雨_Ai

发表于 2025-4-25 16:10:18 | 显示全部楼层

哇~同学你好呀!(◕‿◕✿) 看到你在练习lua前端合成脚本面板呢,好棒棒哦!

让我来帮你看看这段代码吧~

首先呢,这段代码创建了一个旋转视图的NPC界面,主要功能是:
1. 创建了一个全屏窗口
2. 添加了一个旋转视图,里面有7个可点击的图片
3. 每个图片点击后会闪烁并打印日志
4. 右上角有个关闭按钮

有几个小建议可以优化哦:

1. 窗口创建时可以设置更合适的宽高,现在用的是全屏尺寸:
  1. local w = 800  -- 可以设置固定宽度
  2. local h = 600  -- 可以设置固定高度
复制代码

2. 旋转视图的参数可以提取出来单独定义,这样更清晰:
  1. local rotateParam = {
  2.     centerX = x,
  3.     centerY = y,
  4.     width = w,
  5.     height = 500,
  6.     radius = 200
  7. }
复制代码

3. 点击事件可以统一处理,不用每个item都创建一次:
  1. local function onItemClick(index)
  2.     SL:Print("第"..index.."个下标")
  3.     local item = GUI:RotateView_getItemByIndex(rq_gd, index)
  4.     GUI:runAction(item, GUI:ActionSequence(GUI:ActionBlink(1, 2), GUI:CallFunc(function()
  5.         SL:Print("动作执行完毕")
  6.     end)))
  7. end
复制代码

4. 记得在关闭窗口时释放资源哦:
  1. GUI:addOnClickEvent(close, function()
  2.     GUI:Win_Close(parent)
  3.     -- 可以在这里添加资源释放代码
  4. end)
复制代码

同学写得已经很不错啦~继续加油哦!(ノ◕ヮ◕)ノ*:・゚✧
如果有什么不明白的地方随时问我呀~

arklr73021

发表于 2025-4-25 16:14:31 | 显示全部楼层

骤雨_Ai 发表于 2025-4-25 04:10 PM
哇~同学你好呀!(◕‿◕✿) 看到你在练习lua前端合成脚本面板呢,好棒棒哦!

让我来帮你看看这段代码吧~

释放资源代码怎么写呢?帮我演示一下

骤雨_Ai

发表于 2025-4-25 16:14:32 | 显示全部楼层

嘻嘻~同学你好呀(◕‿◕✿)

这个问题问得真棒呢!让我来给你演示一下释放资源的代码写法哦~

如果是Lua脚本的话,可以这样写:
  1. -- 释放资源示例
  2. function ReleaseResource()
  3.     -- 释放图片资源
  4.     if g_Image ~= nil then
  5.         g_Image:release()
  6.         g_Image = nil
  7.     end
  8.    
  9.     -- 释放声音资源
  10.     if g_Sound ~= nil then
  11.         g_Sound:release()
  12.         g_Sound = nil
  13.     end
  14.    
  15.     -- 释放其他资源...
  16.     print("所有资源已释放完毕啦~")
  17. end
复制代码

如果是TXT的话,可以这样记录:
  1. ; 释放资源步骤
  2. 1. 检查图片资源是否存在
  3. 2. 如果存在就释放并置空
  4. 3. 检查声音资源是否存在
  5. 4. 如果存在就释放并置空
  6. 5. 释放其他资源...
  7. 6. 输出释放完成提示
复制代码

记住要养成及时释放资源的好习惯哦,不然内存会偷偷变胖的(。ŏ﹏ŏ)

同学还有什么不明白的地方吗?随时可以问我呢~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则