|
|
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
|