local UIActivityChipRewardPetExchangeView = require("UIActivity/UIActivityChipRewardPetExchangeView_Generate") local IconPetItemCtr = require("Common/IconPetItemCtr") local IconItemCtr = require("Common/IconItemCtr") function UIActivityChipRewardPetExchangeView:OnAwake(data) self.controller = require("UIActivity/UIActivityChipRewardPetExchangeCtr"):new() self.controller:Init(self) self.controller:SetData(data) end function UIActivityChipRewardPetExchangeView:AddEventListener() ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name) ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_Activity_Data_Change,self,self.ActivityRefresh) ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.ACTIVITY_GLOBAL_REFRESH,self,self.Refresh) ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EXCHANGEPET_NTF,self,self.OnPetRewardBack) end function UIActivityChipRewardPetExchangeView:FillContent(data, uiBase) self.uiBase = uiBase local gameObject = self.uiBase:GetRoot() if gameObject ~= nil then self.gameObject = gameObject self.transform = gameObject.transform end self:InitGenerate(self.transform, data) self:Init() end function UIActivityChipRewardPetExchangeView:Init() self.isCanExchange = true self.controller:RefreshChipDatas() local activeItem = self.controller.activityData CommonUtil.LoadIcon(self, activeItem.pageBg, function (sprite) self.banner.image.sprite = sprite end) self.selectList = {} self.cacheNumList = {} self:InitGrid() self:Refresh() if not self.timer then self.timer = FrameTimer.New(slot(self.DelayInitTop, self), 1) end if not self.timer.running then self.timer:Start() end end function UIActivityChipRewardPetExchangeView:DelayInitTop() self:InitTop() end function UIActivityChipRewardPetExchangeView:OnPetRewardBack(data) if data.error == 0 then local itemIndex = self.controller:GetIndexByCfgId(data.reward_idx) - 1 local itemlua = self:GetShowItemByIdx(itemIndex) if itemlua then for i = 1, 4 do if self.cacheNumList[itemIndex][i] and self.selectList[itemIndex][i]then self.cacheNumList[itemIndex][i].selectCount = 0 self.selectList[itemIndex][i] = {} end end self:Refresh() end end self.isCanExchange = true end function UIActivityChipRewardPetExchangeView:InitTop() if not self.updateTimer then self.updateTimer = Timer.New(slot(self.UpdateMinute, self), 60, -1) end if not self.updateTimer.running then self.updateTimer:Start() end local canOpen = self:RefreshRemainTime() if canOpen then local activeItem = self.controller.activityData ManagerContainer.DataMgr.ActsDataMgr:SendGetGlobalCollectionServerData(activeItem.actId) end end function UIActivityChipRewardPetExchangeView:RefreshRemainTime() local leftTime = self.controller:GetRemainTime() if leftTime <= 0 then self.time.text.text = "0" ManagerContainer.DataMgr.ActsDataMgr:RefreshRedPointState(Enum.ActivityType.ACTIVITY_TYPE_FESTIVAL_REWARD) self:OnClickCloseBtn() return false end local day,hour,minute,second = ConvertTimeForm(leftTime) local timeStr = "" if day > 0 then timeStr = day .. Enum.TimeString.m..hour .. Enum.TimeString.h .. minute .. Enum.TimeString.m else if hour > 0 then timeStr = hour .. Enum.TimeString.h .. minute .. Enum.TimeString.m else if minute == 0 then minute = 1 end timeStr = minute .. Enum.TimeString.m end end self.time.text.text = timeStr return true end function UIActivityChipRewardPetExchangeView:UpdateMinute() self:RefreshRemainTime() end function UIActivityChipRewardPetExchangeView:InitGrid() self.boxExchange.loopListView:InitListView(0, function(gridView, itemIndex, row, column) return self:GetItemByRowColumn(gridView, itemIndex, row, column) end, nil) end function UIActivityChipRewardPetExchangeView:ActivityRefresh(actid) if self.controller:GetActId() == actid then self:Refresh() end end function UIActivityChipRewardPetExchangeView:Refresh() local loopListView = self.boxExchange.loopListView local length = self.controller:GetChipDataLength() loopListView:SetListItemCount(length) loopListView:RefreshAllShownItem() end function UIActivityChipRewardPetExchangeView:GetItemByRowColumn(gridView, itemIndex, row, column) local length = self.controller:GetChipDataLength() if (itemIndex < 0 or itemIndex >= length) then return nil end if not self.cacheNumList[itemIndex] then self.cacheNumList[itemIndex] = {} end local showData = self.controller:GetChipShowDataByIdx(itemIndex) local cfgData = ManagerContainer.CfgMgr:GetActivitiesPetExchangeCfgById(showData.cfgId) local enterType = cfgData.Type local item = gridView:NewListViewItem("PetExchangeItem") local itemlua = CommonUtil.BindGridViewItem2Lua(self, "PetExchangeItem", item.gameObject) for i = 1, 4 do itemlua["coastItem"..(i-1)]:SetActive(false) end local globalCount = self.controller:GetGlobalCount(showData.cfgId) local globalLack = (globalCount >= cfgData.ServersReward and cfgData.ServersReward > 0) if cfgData.ExchangeCondition1 then for i = 1, #cfgData.ExchangeCondition1 do local condition = cfgData.ExchangeCondition1[i] --两种类型 两种条件结构 local maxCount = enterType == 0 and condition[5] or condition[4] local index = condition[1] if not self.cacheNumList[itemIndex][index] then self.cacheNumList[itemIndex][index] = {} self.cacheNumList[itemIndex][index].selectCount = 0 self.cacheNumList[itemIndex][index].maxCount = maxCount end local costItemLua = itemlua["coastItem"..(index-1)] self:RefeChipItem(enterType == 0 and costItemLua.iconPetItem or costItemLua.iconItem,condition,{itemIndex,index},globalLack,enterType,costItemLua.addMask) costItemLua.iconPetItem:SetActive(enterType == 0) costItemLua.iconItem:SetActive(enterType ~= 0) costItemLua:SetActive(true) itemlua["text"..(index)].text.text = I18N.SetLanguageValue(self:GetColorText(self.cacheNumList[itemIndex][index].selectCount,maxCount)) end end if cfgData.ExchangeCondition2 then for i = 1, #cfgData.ExchangeCondition2 do local condition = cfgData.ExchangeCondition2[i] --两种类型 两种条件结构 local maxCount = enterType == 0 and condition[5] or condition[4] local index = condition[1] if not self.cacheNumList[itemIndex][index] then self.cacheNumList[itemIndex][index] = {} self.cacheNumList[itemIndex][index].selectCount = 0 self.cacheNumList[itemIndex][index].maxCount = maxCount end if enterType ~= 0 and not (cfgData and cfgData.Scope and cfgData.Scope[i]) then LogError("策划需检查配置,筛选表与条件数量不一致") return end local data = enterType == 0 and condition or {cfgData.Scope[i],condition[2],condition[3],condition[4],condition[5]} local costItemLua = itemlua["coastItem"..(index-1)] self:RefeChipItem(enterType == 0 and costItemLua.iconPetItem or costItemLua.iconItem,data,{itemIndex,index},globalLack,enterType,costItemLua.addMask,true) costItemLua.iconPetItem:SetActive(enterType == 0) costItemLua.iconItem:SetActive(enterType ~= 0) costItemLua:SetActive(true) itemlua["text"..(index)].text.text = I18N.SetLanguageValue(self:GetColorText(self.cacheNumList[itemIndex][index].selectCount,maxCount)) end end itemlua.serverLimit:SetActive(cfgData.ServersReward > 0) local count1 = cfgData.ExchangeCondition1 and #cfgData.ExchangeCondition1 or 0 local count2 = cfgData.ExchangeCondition2 and #cfgData.ExchangeCondition2 or 0 itemlua.coast.scrollRect.enabled = count1 + count2 > 4 if cfgData.ServersReward > 0 then local remain = cfgData.ServersReward - globalCount itemlua.green:SetActive(remain > 0) itemlua.red:SetActive(remain == 0) itemlua.number.text.text = remain.."/"..cfgData.ServersReward end local remainTimes = cfgData.Number - showData.rewardNum itemlua.numberReward.text.text = remainTimes itemlua.mask:SetActive(showData.rewardNum >= cfgData.Number) self:RefeRewardItem(itemlua.reward.iconItem ,cfgData.Reward,enterType) local isCanExchange = self:GetItemIsCanExchange(itemIndex) itemlua.button.button.interactable = isCanExchange CommonUtil.SetTotalChildrenGray(itemlua.button.gameObject, not isCanExchange) itemlua.uIRedPointRP:SetActive(isCanExchange and cfgData.Number > showData.rewardNum and ((globalCount < cfgData.ServersReward and cfgData.ServersReward > 0) or cfgData.ServersReward == 0)) self.uiBase:AddButtonUniqueEventListener(itemlua.button.button, self, self.OnChipClick, itemIndex, isCanExchange, globalLack) return item end function UIActivityChipRewardPetExchangeView:GetItemIsCanExchange(itemIndex) if self.cacheNumList[itemIndex] then for k, v in pairs(self.cacheNumList[itemIndex]) do if v.selectCount < v.maxCount then return false end end end return true end function UIActivityChipRewardPetExchangeView:GetColorText(num,maxNum) if num < maxNum then return ""..num.."/"..maxNum else return ""..num.."/"..maxNum end end function UIActivityChipRewardPetExchangeView:RefeRewardItem(itemlua,data,enterType) local cfgId = data[1][1] local num = data[1][2] local cfgData = ManagerContainer.CfgMgr:GetPetDataById(cfgId) local rewarddata = { cfgId = cfgId, num = num} local logicData = {cfgId = cfgId,num = num,data = rewarddata,enterType = enterType} IconItemCtr:SetData(self,itemlua, logicData, nil, self, self.OnRewardItemClick) end function UIActivityChipRewardPetExchangeView:RefeChipItem(itemlua,data,indexInfo,globalLack,enterType,addMask,isByQulity) local itemIndex = indexInfo[1] local index = indexInfo[2] if enterType == 0 then --宠物兑换 local target = data[2] local level = data[3] local skilllv = data[4] local num = data[5] local hasNum local petDataList = {} if isByQulity then local Icon local frameIcon = Constant.Quality_HeadFrame_Icons[target + 1] local natureIcon = "Jobs/Jobicon_Unknown" if target == 2 then Icon = "Pets/item_petuniversal_mini" elseif target == 3 then Icon = "Pets/item_petuniversal_mvp" end CommonUtil.LoadIcon(self, Icon, function (sprite) itemlua.icon.image.sprite = sprite end) CommonUtil.LoadIcon(self,frameIcon , function (sprite) itemlua.frame.image.sprite = sprite end) CommonUtil.LoadIcon(self,natureIcon , function (sprite) itemlua.nature.image.sprite = sprite end) itemlua.nature:SetActive(true) local starFrame if skilllv > 0 then starFrame = Constant.PetSkillLvStar_Icons[1] elseif skilllv > 10 then starFrame = Constant.PetSkillLvStar_Icons[2] elseif skilllv > 20 then starFrame = Constant.PetSkillLvStar_Icons[3] end hasNum = ManagerContainer.DataMgr.PetDataMgr:GetPetCountByQulityAndLv(target,level,skilllv) CommonUtil.LoadIcon(self, starFrame, function (sprite) itemlua.star.image.sprite = sprite end) itemlua.star:SetActive(true) itemlua.star.advenceLv.text.text = skilllv itemlua.num.text.text = I18N.SetLanguageValue("Lv."..level) itemlua.support:SetActive(false) itemlua.relation:SetActive(false) itemlua.battle:SetActive(false) local parms = {data = data,isByQulity = isByQulity,indexInfo = indexInfo,globalLack = globalLack,enterType = enterType} self.uiBase:AddButtonUniqueEventListener(itemlua.bg.button, self, self.OnItemClick,parms) else hasNum = ManagerContainer.DataMgr.PetDataMgr:GetPetCountByIdAndLv(target,level,skilllv) local logicData = {cfgId = target,level = level, skilllv = skilllv,data = data,isByQulity = isByQulity,indexInfo = indexInfo,globalLack = globalLack,enterType = enterType} IconPetItemCtr:SetData(self,itemlua, logicData, Enum.ItemIEnterType.PetMats, self, self.OnItemClick) end CommonUtil.SetTotalChildrenGray(itemlua.gameObject, hasNum == 0 or globalLack) local isSelect = self.cacheNumList[itemIndex][index].selectCount == self.cacheNumList[itemIndex][index].maxCount addMask:SetActive(not isSelect and hasNum > 0 and not globalLack) elseif enterType == 1 then local itemType = data[2] local num = data[4] local hasNum = 0 if isByQulity then local needLv = data[3] local filtrList = data[1] local target = data[5] for i = 1, #filtrList do hasNum = hasNum + CommonUtil.GetOwnResCountByItemId(filtrList[i]) end local Icon local levelIcon = Constant.Quality_Equip_LV_Icons[needLv] local frameIcon = Constant.Quality_HeadFrame_Icons[target + 1] local cardLableIcon = Constant.Quality_CardType_Icons[target] if target == 2 then Icon = "Card_ic/card_carduniversal_mini" elseif target == 3 then Icon = "Card_ic/card_carduniversal_mvp" end itemlua.level:SetActive(true) CommonUtil.LoadIcon(self, levelIcon, function (sprite) itemlua.level.image.sprite = sprite end) CommonUtil.LoadIcon(self, Icon, function (sprite) itemlua.icon.image.sprite = sprite end) CommonUtil.LoadIcon(self,frameIcon , function (sprite) itemlua.frame.image.sprite = sprite end) CommonUtil.LoadIcon(self, cardLableIcon, function (sprite) itemlua.cardLabel.image.sprite = sprite end) itemlua.cardLabel:SetActive(true) itemlua.job:SetActive(false) itemlua.num:SetActive(false) itemlua.conertips:SetActive(false) local parms = {data = data,isByQulity = isByQulity,indexInfo = indexInfo,globalLack = globalLack,enterType = enterType} self.uiBase:AddButtonUniqueEventListener(itemlua.bg.button, self, self.OnItemClick,parms) else local itemId = data[3] hasNum = CommonUtil.GetOwnResCountByItemId(itemId) local logicData = {cfgId = itemId,data = data,isByQulity = isByQulity,indexInfo = indexInfo,globalLack = globalLack,enterType = enterType} IconItemCtr:SetData(self,itemlua, logicData, nil, self, self.OnItemClick) end CommonUtil.SetTotalChildrenGray(itemlua.gameObject, hasNum == 0 or globalLack) local isSelect = self.cacheNumList[itemIndex][index].selectCount == self.cacheNumList[itemIndex][index].maxCount addMask:SetActive(not isSelect and hasNum > 0 and not globalLack) end end function UIActivityChipRewardPetExchangeView:OnRewardItemClick(button,params) ManagerContainer.LuaUIMgr:OpenTips(params[0].data) end function UIActivityChipRewardPetExchangeView:RemoveEventListener() ManagerContainer.LuaEventMgr:Unregister(self.uiData.name) end function UIActivityChipRewardPetExchangeView:AddUIEventListener() self.uiBase:AddButtonEventListener(self.AnyBtn.button,self, self.OnClickCloseBtn) self.uiBase:AddButtonEventListener(self.backBtn.button,self, self.OnClickCloseBtn) self.uiBase:AddButtonEventListener(self.btnInfo.button, self, self.OnClickPlayRuleBtn) end function UIActivityChipRewardPetExchangeView:OnClickPlayRuleBtn() local rulekey = self.controller:GetRuleKey() ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPlayRule, {'PlayExplainTitle', rulekey}) end function UIActivityChipRewardPetExchangeView:OnClickCloseBtn() ManagerContainer.LuaUIMgr:ClosePage(self.uiBase.PageId) if self.uiBase.MSourceUIID > 0 then ManagerContainer.LuaUIMgr:Open(self.uiBase.MSourceUIID) end end function UIActivityChipRewardPetExchangeView:OnChipClick(button, params) local leftTime = self.controller:GetRemainTime() if leftTime <= 0 then ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("SetsWordActivity02") return end if not self.isCanExchange then return end if params[2] then ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("SetsWordActivity05") return end self.curridx = params[0] ManagerContainer.LuaUIMgr:ShowMessageBox("PetExchangetips",nil,nil,self,self.ItemClick1Sure,nil) end function UIActivityChipRewardPetExchangeView:OnHide() end function UIActivityChipRewardPetExchangeView:OnShow(data) self.controller:SetData(data) end function UIActivityChipRewardPetExchangeView:ItemClick1Sure() local data = {} for k, v in pairs(self.selectList[self.curridx]) do local cfgList={} for key, value in pairs(v) do cfgList[#cfgList + 1] = {key = key,value = value} end local info = {condition_id = k, cost_item = cfgList} data[#data + 1] = info end local showData = self.controller:GetChipShowDataByIdx(self.curridx) local cfgData = ManagerContainer.CfgMgr:GetActivitiesPetExchangeCfgById(showData.cfgId) self.controller:SendGetActivityRewardReq(cfgData.Id,data) self.isCanExchange = false end function UIActivityChipRewardPetExchangeView:OnItemClick(button,params) if not self.isCanExchange then return end local data = params[0] local enterType = data.enterType if data.enterType == 0 then --宠物兑换 local petDataList local target = data.data[2] local level = data.data[3] local skilllv = data.data[4] local num = data.data[5] if data.isByQulity then --是否是按品质任意选择 petDataList = ManagerContainer.DataMgr.PetDataMgr:GetPetDataByQulityAndLv(target,level,skilllv) else petDataList = ManagerContainer.DataMgr.PetDataMgr:GetPetDataByIdAndLv(target,level,skilllv) end local itemIndex = data.indexInfo[1] local Index = data.indexInfo[2] if not self.selectList[itemIndex] then self.selectList[itemIndex] = {} end if not self.selectList[itemIndex][Index] then self.selectList[itemIndex][Index] = {} end local otherSelectList = {} for key, value in pairs(self.selectList) do for k, v in pairs(value) do for i, j in pairs(v) do if not(itemIndex == key and Index == k) then otherSelectList[i] = j end end end end local selectInfo = {selectList =self.selectList[itemIndex][Index],selectCount = self.cacheNumList[itemIndex][Index].selectCount,indexInfo = data.indexInfo,otherSelectList = otherSelectList,conditions = {target,level,skilllv,num,data.isByQulity},enterType = enterType} local params = {list = petDataList,callback = {self,self.OnSelectCom},selectInfo = selectInfo,enterType = enterType} ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPetExchangeMats,params) elseif data.enterType == 1 then --宠物以外兑换 local showList local itemType = data.data[2] local itemId = data.data[3] local filtrList = data.data[1] local num = data.data[4] local quality if data.isByQulity then quality = data.data[5] showList = self.controller:GetShowListByItemTypeAndFiltrList(itemType,filtrList) else showList = self.controller:GetShowListByItemTypeAndId(itemType,itemId) end local itemIndex = data.indexInfo[1] local Index = data.indexInfo[2] if not self.selectList[itemIndex] then self.selectList[itemIndex] = {} end if not self.selectList[itemIndex][Index] then self.selectList[itemIndex][Index] = {} end local otherSelectList = {} for key, value in pairs(self.selectList) do for k, v in pairs(value) do for i, j in pairs(v) do if not(itemIndex == key and Index == k) then otherSelectList[i] = j end end end end local selectInfo = {selectList =self.selectList[itemIndex][Index],selectCount = self.cacheNumList[itemIndex][Index].selectCount,indexInfo = data.indexInfo,otherSelectList = otherSelectList,conditions = {itemType,itemId,filtrList,num,data.isByQulity,quality},enterType = enterType} local params = {list = showList,callback = {self,self.OnSelectCom},selectInfo = selectInfo,enterType = enterType} ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPetExchangeMats,params) end end function UIActivityChipRewardPetExchangeView:OnSelectCom(data) local selectInfo = data local enterType = data.enterType local itemIndex = data.indexInfo[1] local index = data.indexInfo[2] local itemlua = self:GetShowItemByIdx(itemIndex) if itemlua then self.cacheNumList[itemIndex][index].selectCount = data.selectCount local hasNum = 0 if enterType == 0 then if data.conditions[5] then hasNum = ManagerContainer.DataMgr.PetDataMgr:GetPetCountByQulityAndLv(data.conditions[1],data.conditions[2],data.conditions[3]) else hasNum = ManagerContainer.DataMgr.PetDataMgr:GetPetCountByIdAndLv(data.conditions[1],data.conditions[2],data.conditions[3]) end elseif enterType == 1 then if data.conditions[5] then local filtrList = data.conditions[3] for i = 1, #filtrList do hasNum = hasNum + CommonUtil.GetOwnResCountByItemId(filtrList[i]) end else hasNum = CommonUtil.GetOwnResCountByItemId(data.conditions[2]) end end itemlua["coastItem"..(index - 1)].addMask:SetActive(data.selectCount < data.maxNum and hasNum and hasNum >0) itemlua["text"..(index)].text.text = I18N.SetLanguageValue(self:GetColorText(self.cacheNumList[itemIndex][index].selectCount,data.maxNum)) self:CheckSelectIdIsExist(data.selectList,itemIndex,index) local isCanExchange = self:GetItemIsCanExchange(itemIndex) local showData = self.controller:GetChipShowDataByIdx(itemIndex) local cfgData = ManagerContainer.CfgMgr:GetActivitiesPetExchangeCfgById(showData.cfgId) local globalCount = self.controller:GetGlobalCount(showData.cfgId) local globalLack = (globalCount >= cfgData.ServersReward and cfgData.ServersReward > 0) itemlua.button.button.interactable = isCanExchange CommonUtil.SetTotalChildrenGray(itemlua.button.gameObject, not isCanExchange) itemlua.uIRedPointRP:SetActive(isCanExchange and cfgData.Number > showData.rewardNum and ((globalCount < cfgData.ServersReward and cfgData.ServersReward > 0) or cfgData.ServersReward == 0)) end end function UIActivityChipRewardPetExchangeView:CheckSelectIdIsExist(list,itemIndex,index) for _, p in pairs(list) do for key, value in pairs(self.selectList) do for k, v in pairs(value) do for i, j in pairs(v) do if itemIndex == key and index == k then break end if i == _ then self:RefeItemLuaData(key,k,i,j) end end end end end end function UIActivityChipRewardPetExchangeView:RefeItemLuaData(itemIndex,index,id,num) local itemlua = self:GetShowItemByIdx(itemIndex) if itemlua then local count = self.cacheNumList[itemIndex][index].selectCount count = count - num itemlua["coastItem"..(index - 1)].addMask:SetActive(count < self.cacheNumList[itemIndex][index].maxCount) itemlua["text"..(index)].text.text = I18N.SetLanguageValue(self:GetColorText(count,self.cacheNumList[itemIndex][index].maxCount)) self.cacheNumList[itemIndex][index].selectCount = count self.selectList[itemIndex][index][id] = nil local isCanExchange = self:GetItemIsCanExchange(itemIndex) local showData = self.controller:GetChipShowDataByIdx(itemIndex) local cfgData = ManagerContainer.CfgMgr:GetActivitiesPetExchangeCfgById(showData.cfgId) local globalCount = self.controller:GetGlobalCount(showData.cfgId) local globalLack = (globalCount >= cfgData.ServersReward and cfgData.ServersReward > 0) itemlua.button.button.interactable = isCanExchange CommonUtil.SetTotalChildrenGray(itemlua.button.gameObject, not isCanExchange) itemlua.uIRedPointRP:SetActive(isCanExchange and cfgData.Number > showData.rewardNum and ((globalCount < cfgData.ServersReward and cfgData.ServersReward > 0) or cfgData.ServersReward == 0)) end end function UIActivityChipRewardPetExchangeView:GetShowItemByIdx(idx) local item = self.boxExchange.loopListView:GetShownItemByItemIndex(idx) if item then local itemlua = CommonUtil.GetBindGridViewItem2Lua(self, "PetExchangeItem", item.gameObject) return itemlua end end function UIActivityChipRewardPetExchangeView:OnClose() ManagerContainer.LuaUIMgr:ClosePage(Enum.UIPageName.UINoticeTips) if self.timer then self.timer:Stop() self.timer = nil end if self.updateTimer then self.updateTimer:Stop() self.updateTimer = nil end self.selectList = {} self.cacheNumList = {} self.selectList = nil self.cacheNumList = nil end function UIActivityChipRewardPetExchangeView:OnDispose() self.boxExchange.loopListView:Dispose() self.controller:OnDispose() end return UIActivityChipRewardPetExchangeView