PsionicAdvanceBreakTabItem = PsionicAdvanceBreakTabItem or BaseClass(BaseItem) local PsionicAdvanceBreakTabItem = PsionicAdvanceBreakTabItem function PsionicAdvanceBreakTabItem:__init(parent_wnd,prefab_asset,layer_name) self.base_file = "psionic" self.layout_file = "PsionicAdvanceBreakTabItem" self.parent_wnd = parent_wnd self.layer_name = layer_name self.model = PsionicModel:getInstance() self.tab_icon_data = { [1] = {content = "全部", }, [2] = {content = "圣书", }, [3] = {content = "圣球", }, [4] = {content = "圣杯", }, [5] = {content = "圣冠", }, } self.is_selected = false self:Load() end function PsionicAdvanceBreakTabItem:Load_callback() local nodes = { "selected:obj", "bg/tab_red:obj", "bg:obj:img", "bg/tab_name:tmp", "bg/tab_icon:img", } self:GetChildren(nodes) self:AddEvents() if self.need_refreshData then self:UpdateView() end end function PsionicAdvanceBreakTabItem:AddEvents( ) local function click_event(target) if target == self.bg_obj then if self.click_callback then self.click_callback(self.index) end end end AddClickEvent(self.bg_obj, click_event) local function update_break_tab_red(tab_id) if not tab_id or tab_id == PsionicConst.TabId.PBreak then self:UpdateBreakTabRed() end end self:BindEvent(self.model, PsionicConst.UPDATE_RED_BY_TABID, update_break_tab_red) end -- index:这里需要特殊处理 function PsionicAdvanceBreakTabItem:SetData(index, click_callback) self.index = index self.click_callback = click_callback if self.is_loaded then self.need_refreshData = false self:UpdateView() else self.need_refreshData = true end end function PsionicAdvanceBreakTabItem:UpdateView( ) -- 按钮底图 -- lua_resM:setImageSprite(self, self.bg_img, "psionic_asset", self.index == 1 and "ps_break_tab_bg1" or "ps_break_tab_bg2") -- 按钮图标 lua_resM:setImageSprite(self, self.tab_icon_img, "psionic_asset", "ps_break_tab_icon" .. (self.index - 1), true) self.tab_name_tmp.text = self.tab_icon_data[self.index].content self:SetSelected(self.is_selected) self:UpdateBreakTabRed() end -- 更新页签红点 function PsionicAdvanceBreakTabItem:UpdateBreakTabRed( ) if self.index > 1 then -- 第一个tab没有红点 local bool = self.model:GetPsionicBreakSlotRed(self.index + 2) -- 此处需要+2映射 self.tab_red_obj:SetActive(bool) else self.tab_red_obj:SetActive(false) end end function PsionicAdvanceBreakTabItem:SetSelected(bool) self.is_selected = bool if self.is_loaded then lua_resM:setImageSprite(self, self.bg_img, "psionic_asset", self.is_selected and "ps_break_tab_bg1" or "ps_break_tab_bg2", true) -- self.selected_obj:SetActive(self.is_selected) end end function PsionicAdvanceBreakTabItem:__delete( ) end