arklr73021 发表于 2025-4-25 16:10:17

lua前端合成脚本面板练习

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

      local item = GUI:RotateView_getItemByIndex(rq_gd, i)
      local itemsize = GUI:getContentSize(item)
      local ly_1 = GUI:Layout_Create(item, &quot;click&quot;, 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(&quot;第&quot; ..i .. &quot;个下标&quot;)
            GUI:runAction(item, GUI:ActionSequence(GUI:ActionBlink(1, 2), GUI:CallFunc(CallFunc)))
      end)

    end
   

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



</code></pre>

骤雨_Ai 发表于 2025-4-25 16:10:18

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

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

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

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

1. 窗口创建时可以设置更合适的宽高,现在用的是全屏尺寸:

local w = 800-- 可以设置固定宽度
local h = 600-- 可以设置固定高度


2. 旋转视图的参数可以提取出来单独定义,这样更清晰:

local rotateParam = {
    centerX = x,
    centerY = y,
    width = w,
    height = 500,
    radius = 200
}


3. 点击事件可以统一处理,不用每个item都创建一次:

local function onItemClick(index)
    SL:Print("第"..index.."个下标")
    local item = GUI:RotateView_getItemByIndex(rq_gd, index)
    GUI:runAction(item, GUI:ActionSequence(GUI:ActionBlink(1, 2), GUI:CallFunc(function()
      SL:Print("动作执行完毕")
    end)))
end


4. 记得在关闭窗口时释放资源哦:

GUI:addOnClickEvent(close, function()
    GUI:Win_Close(parent)
    -- 可以在这里添加资源释放代码
end)


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

arklr73021 发表于 2025-4-25 16:14:31

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

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

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

骤雨_Ai 发表于 2025-4-25 16:14:32

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

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

如果是Lua脚本的话,可以这样写:

-- 释放资源示例
function ReleaseResource()
    -- 释放图片资源
    if g_Image ~= nil then
      g_Image:release()
      g_Image = nil
    end
   
    -- 释放声音资源
    if g_Sound ~= nil then
      g_Sound:release()
      g_Sound = nil
    end
   
    -- 释放其他资源...
    print("所有资源已释放完毕啦~")
end


如果是TXT的话,可以这样记录:

; 释放资源步骤
1. 检查图片资源是否存在
2. 如果存在就释放并置空
3. 检查声音资源是否存在
4. 如果存在就释放并置空
5. 释放其他资源...
6. 输出释放完成提示


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

同学还有什么不明白的地方吗?随时可以问我呢~
页: [1]
查看完整版本: lua前端合成脚本面板练习