|
|
- --tabbar按钮(单个按钮)
- NewUICusVerTabBtn = NewUICusVerTabBtn or BaseClass(BaseComponent)
-
- -- NewUICusVerTabBtn.BTN_HEIGHT = 66 --tab按钮的高度,不包括下一级tab按钮的容器高度
- -- NewUICusVerTabBtn.SUB_CON_WIDTH = 178 --下一级tab按钮的容器宽度
-
- function NewUICusVerTabBtn:__init(parent, sub_item, size, tabbar,child_offset)
- self.tabbar = tabbar
- self.sub_btn_list = {}
- self.tab_data = nil
- self.index = 1
- self.call_back = nil
- self.show = false --是否展开
- self.select_anything = false --是否可以在有子类的时候选中大类
- self.btn_width = size and size.x or 189 --tab按钮的宽度,不包括下一级tab按钮的容器宽度
- self.btn_height = size and size.y or 66 --tab按钮的高度,不包括下一级tab按钮的容器高度
- self.sub_con_width = size and size.x - 16 or 178 --下一级tab按钮的容器宽度
- self.sub_item = sub_item
- self.child_offset = child_offset
- self:CreateGameObject(UIType.UIVerTabBtn)
- end
-
- function NewUICusVerTabBtn:__delete()
- for i,v in ipairs(self.sub_btn_list) do
- v:DeleteMe()
- v = nil
- end
- self.sub_btn_list = {}
- if self.event_id then
- GlobalEventSystem:UnBind(self.event_id)
- self.event_id = nil
- end
- end
-
- function NewUICusVerTabBtn:LoadSuccess()
- self.btnText = self:GetChild("tab/Text"):GetComponent("Text")
- self.btn_tran = self:GetChild("tab/Text")
- self.icon = self:GetChild("tab/icon"):GetComponent("Image")
- self.icon_tran = self:GetChild("tab/icon")
- self.imgSelect = self:GetChild("tab/selectBg").gameObject
- self.iconObj = self:GetChild("tab/icon").gameObject
- self.addBtn = self:GetChild("subCon").gameObject
- self.tab = self:GetChild("tab").gameObject
- self.tab_img = self:GetChild("tab")
- self.subCon = self:GetChild("subCon")
- self.img = self:GetChild("tab/img").gameObject
- self.red_dot = self:GetChild("tab/dot").gameObject
-
- self:RedreshSize()
- self:InitEvent()
- end
-
- function NewUICusVerTabBtn:InitEvent()
- -- local function onBtnClickHandler(target)
- -- if target == self.tab then
- -- if self.call_back then
- -- self.call_back(self.index,0)
- -- end
- -- end
- -- end
- -- AddClickEvent(self.tab, onBtnClickHandler,2)
- end
-
- --设置tab数据
- function NewUICusVerTabBtn:SetTabDetail(data, index, call_back, select_anything, force_size)
-
- self.tab_data = data
- self.index = index
- self.call_back = call_back
- self.select_anything = select_anything
- self.force_size = force_size
- if data == nil or self.tab_data.main_tab == nil then return end
-
- self:SetText(self.tab_data.main_tab)
-
- if self.tab_data == nil or #self.tab_data.sub_tab == 0 then
- self.iconObj:SetActive(false)
- else
- self.iconObj:SetActive(true)
- end
-
- self:SetSubBtns(self.tab_data.sub_tab, self.index, call_back)
- end
-
- --设置下一级的按钮
- function NewUICusVerTabBtn:SetSubBtns(sub_tab_list, parent_index, call_back)
- for i,v in ipairs(self.sub_btn_list) do
- v:SetVisible(false)
- end
- for i,v in ipairs(sub_tab_list) do
- local sub_tab = self.sub_btn_list[i]
- if sub_tab == nil then
- sub_tab = self.sub_item.New(self.subCon)
- self.sub_btn_list[i] = sub_tab
- if self.force_size then
- sub_tab:SetTabSubBtnSize(self.sub_con_width)
- end
- end
-
- -- sub_tab:SetSubDeail(v, parent_index, i, call_back)
- sub_tab:SetData(v, parent_index, i, call_back)
- sub_tab:SetVisible(true)
-
- local x = 0
- local y = -(i - 1) * self.sub_item.Height
- x = self.offset and self.offset.x + x or x
- y = self.offset and -(i - 1) * self.offset.y + y or y
- sub_tab:SetPosition(x, y)
-
- -- local function onBtnClickHandler(target)
- -- self:SetSelectSubIndex(0, 0)
- -- self:SetSelectSubIndex(sub_tab.parent_idnex, sub_tab.sub_index)
- -- end
- -- if sub_tab.Button then
- -- AddClickEvent(sub_tab.Button, onBtnClickHandler,2)
- -- end
-
- end
- self.subCon.gameObject:SetActive(false)
- end
-
- --选中菜单
- function NewUICusVerTabBtn:SetSelectMode(index, sub_index,force_show)
- if self.index == index then
- self.show = not self.show
- else
- self.show = false
- end
- -- self.show = not self.show
-
- if force_show and self.index == index then
- self.show = true
- end
-
- if self.show and index then
- self.icon_tran.transform.localRotation = Quaternion.Euler(0,0,-90)
- self:SetSelectState(true)
- --SetRotate(self.icon_tran, 0, 0, -90)
- --lua_resM:setImageSprite(self,self.icon,"uicomponent_asset","ui_minus",true)
- --self.icon_tran.localPosition = Vector3(self.btn_width- 26, -self.btn_height / 2,0)
- self:ShowSubBtnVisible(true)
- -- if sub_index then
- -- self:SetSelectSubIndex(index, sub_index)
- -- end
- else
- SetLocalRotation(self.icon_tran, 0, 0, 0)
- self:SetSelectState(false)
- --lua_resM:setImageSprite(self,self.icon,"uicomponent_asset","ui_addicon",true)
- --self.icon_tran.localPosition = Vector3(self.btn_width- 26, -self.btn_height / 2 + 7,0)
- self:ShowSubBtnVisible(false)
- end
- end
-
- --设置图标,隐藏sub
- function NewUICusVerTabBtn:RefreshBtnState(show)
- self.show = show
-
- if self.show then
- self.icon_tran.transform.localRotation = Quaternion.Euler(0,0,-90)
- --SetRotate(self.icon_tran, 0, 0, -90)
- --lua_resM:setImageSprite(self,self.icon,"uicomponent_asset","ui_minus",true)
- --self.icon_tran.localPosition = Vector3(self.btn_width- 26, -self.btn_height / 2,0)
- else
- SetLocalRotation(self.icon_tran, 0, 0, 0)
- --lua_resM:setImageSprite(self,self.icon,"uicomponent_asset","ui_addicon",true)
- --self.icon_tran.localPosition = Vector3(self.btn_width- 26, -self.btn_height / 2 + 7,0)
- end
-
- if self.subCon and self.sub_btn_list and #self.sub_btn_list ~= 0 then
- self.subCon.gameObject:SetActive(show)
- end
- end
-
- --设置选中的子一级tab
- function NewUICusVerTabBtn:SetSelectSubIndex(index, sub_index)
- for i,v in ipairs(self.sub_btn_list) do
- if v.parent_index == index and v.sub_index == sub_index then
- v:SetSelected(true, true)
- else
- v:SetSelected(false)
- end
- end
- end
-
- function NewUICusVerTabBtn:SetText(str)
- self.btnText.text = str
- end
-
- function NewUICusVerTabBtn:ShowSubBtnVisible(bool)
- if self.subCon and self.sub_btn_list and #self.sub_btn_list ~= 0 then
- self.subCon.gameObject:SetActive(bool)
- if self.select_anything then
- --if self.call_back then self.call_back(self.index,0) end
- end
- else
- --if self.call_back then self.call_back(self.index,0) end
- end
- end
-
- function NewUICusVerTabBtn:SetSubConSize(height)
- -- self.subCon.sizeDelta = Vector2(NewUICusVerTabBtn.SUB_CON_WIDTH, height)
- end
-
- --设置大小
- function NewUICusVerTabBtn:SetTabBtnSize()
-
- end
-
- function NewUICusVerTabBtn:SetSelectState(b)
- self.imgSelect:SetActive(b)
- if b then
- self:SetSelectBg()
- end
- end
-
- function NewUICusVerTabBtn:SetSelectBg()
- if self.imgSelect:GetComponent("Image").sprite.name == "empty" then
- lua_resM:setImageSprite(self,self.imgSelect:GetComponent("Image"),"common_asset","tyui_btn3_1")
- self.imgSelect.transform.anchorMin = Vector2(0, 0)
- self.imgSelect.transform.anchorMax = Vector2(1, 1)
- self.imgSelect.transform.offsetMax = Vector2(0, 0)
- self.imgSelect.transform.offsetMin = Vector2(0, 0)
- SetAnchoredPosition(self.imgSelect.transform,0,0)
- end
- end
-
- function NewUICusVerTabBtn:SetImageTexture(asset_path,res_name)
- if asset_path and res_name then
- self.img:SetActive(true)
- lua_resM:setImageSprite(self,self.img:GetComponent("Image"),asset_path,res_name)
- else
- self.img:SetActive(false)
- end
- end
-
-
- function NewUICusVerTabBtn:ShowRedDot(list)
- if list and #list > 0 then
- table.sort(list)
- end
- self.sub_red_list = list
-
- for i, v in ipairs(self.sub_btn_list) do
- v:ShowRedDot(false)
- end
- if not list or #list == 0 then
- self.red_dot:SetActive(false)
- else
- self.red_dot:SetActive(true)
- for i, v in ipairs(list) do
- if self.sub_btn_list[v] then
- self.sub_btn_list[v]:ShowRedDot(true)
- end
- end
- end
-
- if list[0] then
- self.red_dot:SetActive(true)
- end
- end
-
-
- function NewUICusVerTabBtn:SetSubOffset(offset)
- self.offset = offset
- end
-
- --加载完但不显示的不需计算高度
- function NewUICusVerTabBtn:GetVisibleCount(visible)
- local count = 0
- for _,v in ipairs(self.sub_btn_list) do
- if v:GetVisible() == visible or not v.is_loaded then
- count = count + 1
- end
- end
- return count
- end
-
- function NewUICusVerTabBtn:RedreshSize()
- self.tab_img.sizeDelta = Vector2(self.btn_width, self.btn_height)
- --self.icon_tran.localPosition = Vector3(self.btn_width- 26, -self.btn_height / 2 + 7,0)
- SetAnchoredPosition(self.tab.transform,0,0)
- if self.child_offset then
- self.subCon.localPosition = Vector3(self.child_offset.x, self.child_offset.y,0)
- else
- self.subCon.localPosition = Vector3(self.subCon.localPosition.x, -self.btn_height,0)
- end
- end
|