源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

115 lines
3.3 KiB

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