|
|
-
- Combox = Combox or BaseClass(BaseComponent)
- local Combox = Combox
-
- function Combox:__init(parent,data,callback,width,height,red_data,prefab_data,layer_name)
- self.data = data or {}
- self.prefab_data = prefab_data or {Combox = "Combox",ComboxView = "ComboxView", ComboxItem = "ComboxItem", ComboxView_Offer_Y = 100, index = 1}
- self.callback = callback
- self.width = width or 142
- self.height = height or 32
- self.index = self.prefab_data.index or 1
- self.layer_name = "Top"--layer_name
- if self.prefab_data and self.prefab_data.Combox == "Combox" then--不同的类型在这里加判断即可
- self:CreateGameObject(UIType.Combox)
- else
- self:CreateGameObject(UIType.Combox)
- end
- self.red_data = red_data or {}
- end
-
- function Combox:LoadSuccess()
- local nodes = {
- "img_bg/img_up:obj","img_bg","img_bg/img_down:obj","img_bg/img_red:obj","show_text:tmp",
- }
- self:GetChildren(nodes)
- self.is_loaded = true
-
- self.img_bg.sizeDelta = Vector2(self.width,self.height)
- self.transform.sizeDelta = Vector2(self.width,self.height)
- self.show_text_tmp.text = self.data[self.index] or ""
- -- self:SetSelectIndex(self.index)
- self:RefreshRedData()
- self:AddEvent()
- end
-
- function Combox:AddEvent()
- local function callback(index)
- self:SetSelectIndex(index)
- end
- local function close_callback()
- if self._use_delete_method then
- return
- end
- self.img_up_obj:SetActive(false)
- self.img_down_obj:SetActive(true)
- self.comboxView = nil --已经销毁了,直接释放引用
- end
- local function onClick()
- self.img_up_obj:SetActive(true)
- self.img_down_obj:SetActive(false)
- if not self.comboxView then
- self.comboxView = ComboxView.New(nil,self.prefab_data,self.layer_name)
- end
- self.comboxView:SetSize(self.width,self.height)
- self.comboxView:Open(self.data,callback,close_callback,self.transform.position,self.red_data,self.source_type)
- end
- AddClickEvent(self.gameObject,onClick)
- end
-
- function Combox:SetSelectIndex(index,tag)
- self.index = index or self.index
- if self.is_loaded then
- self.show_text_tmp.text = self.data[index] or ""
- end
- if self.callback and not self.just_set_select then
- self.callback(self.index,tag)
- end
- self.just_set_select = false
- end
-
- function Combox:SetData(data)
- end
- --just_set_select 表示只选中item,不执行回调
- function Combox:ResetData(data,index,callback,width,height,red_data,just_set_select, prefab_data)
- self.data = data or {}
- self.index = index or 1
- self.callback = callback or self.callback
- self.just_set_select = just_set_select
- self.prefab_data = prefab_data
- self.red_data = red_data or {}
- self:SetSelectIndex(self.index)
- self:RefreshRedData()
-
- if width or height then
- self.width = width or self.width or 142
- self.height = height or self.height or 32
- self:SetSize()
- end
- end
-
- function Combox:RefreshRedData( red_data )
- self.red_data = red_data or {}
- if self.is_loaded and self.img_red_obj and self.img_red_obj then
- local result = false
- for k,v in pairs(self.red_data) do
- if v == true then
- result = true
- break
- end
- end
- self.img_red_obj:SetActive(result)
- end
- end
-
- function Combox:SetSize( )
- self.img_bg.sizeDelta = Vector2(self.width,self.height)
- self.transform.sizeDelta = Vector2(self.width,self.height)
- end
-
- function Combox:__delete()
- if self.comboxView then
- self.comboxView:Close()
- self.comboxView = nil
- end
- end
|