现在我需要你设计一个功能,首充礼包的购买根据U21变量纪律,U21=0未购买,U21=1以购买,现在根据U21的值不同展示不同界面
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-18 15:10:56 |
👁️ 阅读: 11
根据浮生梦老师前端课程内容,我来帮你设计这个首充礼包功能。你需要根据U21变量的值来展示不同的界面。
```lua
local ShouchongOBJ = {}
ShouchongOBJ.__cname = "ShouchongOBJ"
-- 获取U21变量值
function ShouchongOBJ:getU21Value()
-- 从服务端获取U21变量值
local u21Value = SL:GetMetaValue("SERVER_VALUE", "U21") or 0
return tonumber(u21Value)
end
-- 创建界面
function ShouchongOBJ:createUI()
-- 先创建父节点
local parent = GUI:Win_Create("ShouchongMain", 0, 0, 0, 0, false, false, true, false, false, false, 1)
-- 获取U21值
local u21 = self:getU21Value()
if u21 == 0 then
-- 未购买状态:显示购买界面
self:showBuyUI(parent)
else
-- 已购买状态:显示已购买界面
self:showBoughtUI(parent)
end
return parent
end
-- 显示购买界面
function ShouchongOBJ:showBuyUI(parent)
-- 创建背景
local bg = GUI:Image_Create(parent, "bg_buy", 0, 0, "res/public_win32/1900000610.png")
GUI:setPosition(bg, 0, 0)
-- 创建购买按钮
local btnBuy = GUI:Button_Create(parent, "btn_buy", 200, 200, "res/public_win32/1900000612.png")
GUI:Button_setTitleText(btnBuy, "立即购买")
-- 按钮点击事件
GUI:addOnClickEvent(btnBuy, function()
-- 调用购买接口
lualib:RequestPay({ 1, 1 }) -- 假设是首充礼包支付
-- 刷新界面
self:refreshUI()
end)
-- 创建文字说明
local textDesc = GUI:Text_Create(parent, "Text_desc", 200, 300, 16, "#ffffff", "首充礼包仅需38元")
GUI:Text_setFontName(textDesc, "fonts/font5.ttf")
end
-- 显示已购买界面
function ShouchongOBJ:showBoughtUI(parent)
-- 创建背景
local bg = GUI:Image_Create(parent, "bg_bought", 0, 0, "res/public_win32/1900000610.png")
GUI:setPosition(bg, 0, 0)
-- 创建已购买标签
local textBought = GUI:Text_Create(parent, "Text_bought", 200, 200, 20, "#00ff00", "已购买首充礼包")
GUI:Text_setFontName(textBought, "fonts/font5.ttf")
-- 创建领取奖励按钮
local btnGet = GUI:Button_Create(parent, "btn_get", 200, 250, "res/public_win32/1900000612.png")
GUI:Button_setTitleText(btnGet, "领取奖励")
GUI:addOnClickEvent(btnGet, function()
-- 发送领取请求
Message:sendmsg(NetMsgCfg.Shouchong_GetReward)
SL:print("领取首充奖励")
end)
end
-- 刷新界面
function ShouchongOBJ:refreshUI()
local parent = GUI:getChildByName(nil, "ShouchongMain")
if not GUI:Win_IsNull(parent) then
-- 移除所有子节点
GUI:removeAllChildren(parent)
-- 重新创建界面
local u21 = self:getU21Value()
if u21 == 0 then
self:showBuyUI(parent)
else
self:showBoughtUI(parent)
end
end
end
-- 注册引擎事件
function ShouchongOBJ:addEngineEvent()
-- 监听U21变量变化
SL:RegisterLUAEvent('U21_CHANGE', "ShouchongOBJ", function(data)
self:refreshUI()
end)
-- 界面初始化
SL:RegisterLUAEvent(LUA_EVENT_ENTER_WORLD, "ShouchongOBJ", function(data)
self:createUI()
end)
end
-- 初始化
function ShouchongOBJ:init()
self:addEngineEvent()
self:createUI()
end
return ShouchongOBJ
```
**功能说明:**
1. **U21变量获取**:使用`SL:GetMetaValue("SERVER_VALUE", "U21")`从服务端获取变量值
2. **界面状态判断**:
- U21=0:显示购买界面,包含购买按钮和说明
- U21=1:显示已购买界面,包含领取奖励按钮
3. **购买功能**:点击购买按钮调用`lualib:RequestPay({ 1, 1 })`进行支付
4. **界面刷新**:当U21值变化时,自动刷新界面显示
5. **事件监听**:注册引擎事件监听变量变化和界面初始化
**使用步骤:**
1. 将上述代码保存为`ShouchongOBJ.lua`
2. 在适当的地方调用`ShouchongOBJ:init()`初始化
3. 服务端需要设置和更新U21变量值
这样设计可以清晰地根据U21变量的值展示不同的界面状态,用户体验更好。如果还有不明白的地方,随时问我!
← 返回问答库