记录RewardCenterLevel.lua以防丢失

本文深入探讨了游戏开发领域的关键技术,包括游戏引擎、编程语言、硬件优化等,并重点介绍了AI音视频处理在游戏中的应用,如语音识别、图像处理、AR特效等。同时,文章还涉及了自动化测试、性能优化等现代开发流程,旨在提供全面的游戏开发实践指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-----------------------------------------------------
-- Module RewardCenterLevel
-- Dialog视图模板
-----------------------------------------------------
module( "RewardCenterLevel",package.seeall )
setmetatable(RewardCenterLevel,{__index = dialog_t})


---------------------------实例变量--------------------------
local instance = nil
local NUM_SUB_ITEM = 4 -- 每行最多可以配置四个道具,至少要配置一个道具
local PAGE_COUNT = 3 --每页显示的领奖ITEM个数
local ITEM_MARGIN = 8


----------------------------实例的创建与销毁-------------------------
function getInstance()
    instance = instance or new()
    return instance
end


function destroyInstance()
    if instance then
        instance:dispose()
        instance = nil
    end
end


-----------------------------------------------------
function new()
    local this = {}
    setmetatable(this,{__index = RewardCenterLevel})
    this:init()
    return this
end


------------------------------实例的UI初始化-----------------------
function init(self)
    dialog_t.init(self)


    self._name = "RewardCenterLevel"
    self._layout = Global.getInstance():loadUI("", "Sign") -- 注意这里用的 Sign.csd


    self._core:addChild(self._layout)


    self:initRegister()
end


-------------------------------实例UI对象的初始化与绑定----------------------
function controlRegister(self)
--    self.xxxx = Global.getInstance():getUINodeLoopByName(self._layout, "xxxx")
--
--    self.xxxx_list = Global.getInstance():getUINodeLoopByName(self._layout, "xxxx_list")
--    self.xxxx_list:setBounceEnabled(true)
--    self.xxxx_list:setItemsMargin(4.0)
--    self.xxxx_list:setItemModel(Global.getInstance():loadUI("", "xxxx_item"))
--
--    Global.getInstance():UIEventRegister("ended", self._name, self.xxxx, "btnxxxx")
      Global.getInstance():getUINodeLoopByName(self._layout, "lbl_times"):setVisible(false)
      Global.getInstance():getUINodeLoopByName(self._layout, "lbl_num"):setVisible(false)
    Global.getInstance():getUINodeLoopByName(self._layout, "scv_itemlist"):setVisible(false)
    self.lsv_main   = Global.getInstance():getUINodeLoopByName(self._layout, "lsv_main")
    self.lsv_main:setVisible(true)
    self.lsv_main:setBounceEnabled(true)
    self.lsv_main:setItemsMargin(ITEM_MARGIN)
    local item_layer = Global.getInstance():loadUI("", "RewardCell")
    local item_model = Global.getInstance():getUINodeLoopByName(item_layer, "pnl_main")
    --self.lsv_main:setItemModel(Global.getInstance():getUINodeLoopByName(Global.getInstance():loadUI("", "RewardCell"), "pnl_item"))
    self.lsv_main:setItemModel(item_model)
    
    self.lsv_main:addScrollViewEventListener(ListScrollViewEvent)
    
    self.btn_sign       = Global.getInstance():getUINodeLoopByName(self._layout, "btn_sign")
    self.btn_level      = Global.getInstance():getUINodeLoopByName(self._layout, "btn_level")
    self.btn_vip        = Global.getInstance():getUINodeLoopByName(self._layout, "btn_vip")
    self.btn_supply     = Global.getInstance():getUINodeLoopByName(self._layout, "btn_supply")
    self.btn_close      = Global.getInstance():getUINodeLoopByName(self._layout, "btn_close")
    self.btn_server      = Global.getInstance():getUINodeLoopByName(self._layout, "btn_server")
    
    Global.getInstance():UIEventRegister("ended", self._name, self.btn_close, "btnClose")
    Global.getInstance():UIEventRegister("ended", self._name, self.btn_sign, "btnSign")
    Global.getInstance():UIEventRegister("ended", self._name, self.btn_level, "btnLevel")
    Global.getInstance():UIEventRegister("ended", self._name, self.btn_supply, "btnSupply")
    Global.getInstance():UIEventRegister("ended", self._name, self.btn_server, "btnServer")
    Global.getInstance():UIEventRegister("ended", self._name, self.btn_vip, "btnVip")
    
end


----------------------------消息注册-------------------------
function messageRegister(self)
-- self.listener1 = Global.getInstance():UIMessageRegister("xxxx", self._name)
end




-----------------------------消息清除------------------------
function messageUnRegister(self)
-- Global.getInstance():UIMessageUnRegister(self.listener1)
end


------------------------------消息触发回调-----------------------
function onMessage(self, name, data)
    if "xxxx" == name then


    elseif "" == name then


    end
end


---------------------------通知注册--------------------------
function noticeRegister(self)
-- self.notice = Global.getInstance():UINoticeRegister("xxxx", self._name)
end


----------------------------通知清除-------------------------
function noticeUnRegister(self)
-- Global.getInstance():UINoticeUnRegister(self.notice)
end


-----------------------------通知触发回调------------------------
function onNotice(self, name, data)
    if "xxxx" == name then


    elseif "" == name then


    end
end


-----------------------------初始化------------------------
function initRegister(self)
    self:controlRegister()
    self:messageRegister()
    self:noticeRegister()
end


function releaseRegister( self )
    self:messageUnRegister()
    self:noticeUnRegister()
end


-----------------------------场景开始载入回调------------------------
function onEnter(self)
    print(self._name .. " => " .. "onEnter")
    
    self.now_count = 0
    self.data = UserData.player.giftLevel 
    self.config = Configs.M("GiftLevel"):get()
    self:LoadNextItems()
end


------------------------------场景清除回调-----------------------
function onExit(self)
    print(self._name .. " => " .. "onExit")
end


-------------------------------实例销毁----------------------
function dispose(self)
    self:releaseRegister()
    if self._core then
        self._core:removeFromParent(true)
        self._core = nil
    end
    dialog_t.dispose(self)
end


--------------------------------UI刷新---------------------
function refreshUI(self)


end
function refreshData(self)


end
-----------------------------------------------------
function btnXXXX(self, sender, param)


end


function btnClose(self, sender, param)
    Dialogs.getInstance():closeDialog(self._name)
end


function btnSign(self, sender, param)
    print("#########btnSign in RewardCenterLevel##########")
    Dialogs.getInstance():closeDialog(self._name)
    Dialogs.getInstance():showDialog("RewardCenterSign")
end


function btnLevel(self, sender, param)
    print("#########btnLevel in RewardCenterLevel##########")
    Dialogs.getInstance():closeDialog(self._name)
    Dialogs.getInstance():showDialog("RewardCenterLevel")
end


function btnVip(self, sender, param)
    print("##########btnVip in RewardCenterLevel#############")
    Dialogs.getInstance():closeDialog(self._name)
--    Dialogs.getInstance():showDialog("waiting..")
end


function btnSupply(self, sender, param)
    print("##########btnSupply in RewardCenterLevel#############")
    Dialogs.getInstance():closeDialog(self._name)
--    Dialogs.getInstance():showDialog("waiting..")
end


function btnServer(self, sender, param)
    print("##########btnSupply in RewardCenterLevel#############")
    Dialogs.getInstance():closeDialog(self._name)
    Dialogs.getInstance():showDialog("RewardCenterServer")
end


function ListScrollViewEvent(sender, evenType)
    if evenType == ccui.ScrollviewEventType.scrollToBottom then
        print("Scroll_to_down")
        getInstance().lsv_main:jumpToBottom()
        getInstance():LoadNextItems()
    elseif evenType ==  ccui.ScrollviewEventType.scrollToTop then
        print("SCROLL_TO_TOP")
    end
end
-----------额外自定义-----------
--加载新页,最初显示第一页也调用该函数
function LoadNextItems(self )   --要保证 level config里的数据是数组形式的数据
    print("RewardCenterLevel.LoadNextItems")
    local start = self.now_count + 1
    --self.i = self.now_count + 1
    self.now_count = math.min( self.now_count + PAGE_COUNT , #self.config)
   
    -- 危险: 在 for 循环内部发消息会导致异步发送,应当让一个消息返回后再发送下一条,所以button状态的初始化用另一种方式
    
   for i = start , self.now_count do   -- i同时对应了config中的索引和listitem的索引
        self.lsv_main:pushBackDefaultItem()
        local item = self.lsv_main:getItem( i - 1)
        --local config = Configs.M("GiftLevel"):get(i)
        --赋值子item ,最多NUM_SUB_ITEM个
        --local root = Global.getInstance():getUINodeLoopByName(item, "img_bg")


        for j = 1, NUM_SUB_ITEM do
            if self.config[i]["code" .. j] == nil then
                break;
            end


            local cur_img = Global.getInstance():getUINodeLoopByName(item, "img_" .. j)
            --Global.getInstance():UIEventRegister("ended", self._name, cur_img, "ShowTips", nil, self.config[i]["type" .. j]) --点击图片显示Tips
--            local txt_name = Global.getInstance():getUINodeLoopByName(subItem, "txt_name"):setString("waiting..")
--            local txt_cnt = Global.getInstance():getUINodeLoopByName(subItem, "txt_cnt"):setString(string.format("%d",config[i]["num" .. j])) --waiting..
            
        end
        self["btn_get" .. i] = Global.getInstance():getUINodeLoopByName(item, "btn_get")
        --print("#####  " .. self.config[i].level ..   "    " .. PlayerData.lv)
        if self.config[i].level <= PlayerData.lv then
            if self.data[tostring(self.config[i].level)] == nil then
                self["btn_get" .. i]:setTitleText("not got")
                Global.getInstance():UIEventRegister("ended", self._name, self["btn_get" .. i], "ClickBtn", nil, i)
            else
                self["btn_get" .. i]:setTouchEnabled(false)
                self["btn_get" .. i]:setTitleText("got")
            end
        else
            self["btn_get" .. i]:setTouchEnabled(false)
            self["btn_get" .. i]:setTitleText("not reach")
        end
    end
end




function ClickBtn(self, sender, i)
    --self["btn_" .. i]:loadTextureDisabled("")
    Requests.getInstance():send("LevelReward_ButtonGot",{level=self.config[i].level},function (data) 
        self["btn_get" .. i]:setTouchEnabled(false)
        self["btn_get" .. i]:setTitleText("got")
        --注意self.data中的值也要改
        self.data[tostring(self.config[i].level)] = 1 --self.data只起到标记作用,而且索引为自由number
    end)
end





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值