ComboxView = ComboxView or BaseClass(BaseView)
|
|
local ComboxView = ComboxView
|
|
|
|
function ComboxView:__init(parent_wnd, prefab_data, layer_name)
|
|
self.base_file = "uiComponent"
|
|
self.layout_file = prefab_data and prefab_data.ComboxView or "ComboxView"
|
|
self.layer_name = layer_name or "Activity"
|
|
self.destroy_imm = true
|
|
self.use_background = false
|
|
self.change_scene_close = true
|
|
self.prefab_data = prefab_data or {Combox = "Combox",ComboxView = "ComboxView", ComboxItem = "ComboxItem", show_type = "down"}
|
|
self.height_extra = 0
|
|
self.pos = Vector3(0,0,0)
|
|
self.item_list = {}
|
|
self.red_data = {}
|
|
self:SetOfferXY()
|
|
|
|
self.load_callback = function ()
|
|
self:LoadSuccess()
|
|
self:AddEvent()
|
|
end
|
|
self.open_callback = function ( )
|
|
self:OpenSuccess()
|
|
end
|
|
self.destroy_callback = function ( )
|
|
self:DestroySuccess()
|
|
end
|
|
end
|
|
|
|
function ComboxView:Close()
|
|
if self.combox_close_callback then
|
|
self.combox_close_callback()
|
|
end
|
|
BaseView.Close(self)
|
|
end
|
|
|
|
function ComboxView:Open(data,callback,combox_close_callback,pos,red_data)
|
|
self.data = data or {}
|
|
self.callback = callback
|
|
self.combox_close_callback = combox_close_callback
|
|
self.pos = pos
|
|
self.red_data = red_data or {}
|
|
|
|
BaseView.Open(self)
|
|
end
|
|
|
|
--设置偏移量
|
|
function ComboxView:SetOfferXY( )
|
|
if self.layout_file == "ComboxView" then
|
|
self.bg_add_height = 0
|
|
self.bg_offerx = -11
|
|
self.bg_offery = 0
|
|
end
|
|
end
|
|
|
|
function ComboxView:SetSize(width,height)
|
|
self.width = width
|
|
self.height = height
|
|
if self.img_bg then
|
|
local height = #self.data * (ComboxItem.Height+self.height_extra)+18
|
|
if #self.data == 0 then
|
|
height = (ComboxItem.Height+self.height_extra)
|
|
end
|
|
self.img_bg.sizeDelta = Vector2(self.width,height)
|
|
end
|
|
end
|
|
|
|
function ComboxView:LoadSuccess()
|
|
self.img_bg = self:GetChild("img_bg")
|
|
self.con = self:GetChild("img_bg/con")
|
|
self.touch_con = self:GetChild("touch_con").gameObject
|
|
SetSizeDelta(self.touch_con.transform, ScreenWidth*1.5, ScreenHeight*1.5)
|
|
|
|
local width = self.width or self.img_bg.sizeDelta.x
|
|
--总高度
|
|
local height = #self.data * (ComboxItem.Height+self.height_extra)+3
|
|
if #self.data == 0 then
|
|
height = (ComboxItem.Height+self.height_extra)
|
|
end
|
|
self.height = height
|
|
self.img_bg.sizeDelta = Vector2(width,height+self.bg_add_height)
|
|
if self.pos then
|
|
self:SetTransOffsetY()
|
|
local pos = self.img_bg:InverseTransformPoint(self.pos)
|
|
self.img_bg.localPosition = Vector3(pos.x+self.bg_offerx,pos.y+self.bg_offery,0)
|
|
end
|
|
end
|
|
|
|
function ComboxView:SetTransOffsetY( )
|
|
if self.prefab_data.offset_y then
|
|
if self.prefab_data.show_type == "down" then
|
|
self.bg_offery = -30 + self.prefab_data.offset_y + self.height
|
|
else
|
|
self.bg_offery = 16 + self.prefab_data.offset_y + self.height + self.height
|
|
end
|
|
end
|
|
end
|
|
|
|
function ComboxView:AddEvent()
|
|
local function onClick(...)
|
|
self:Close()
|
|
end
|
|
AddClickEvent(self.touch_con,onClick)
|
|
end
|
|
|
|
function ComboxView:OpenSuccess()
|
|
-------------------------
|
|
local function callback(index)
|
|
if self.callback then
|
|
self.callback(index)
|
|
end
|
|
self:Close()
|
|
end
|
|
local x = 0
|
|
local height = self.img_bg.sizeDelta.y
|
|
for i=1,#self.data do
|
|
local item = self.item_list[i]
|
|
if not item then
|
|
item = ComboxItem.New(self.img_bg,nil,nil,self.prefab_data)
|
|
self.item_list[i] = item
|
|
item:SetPosition(x,-(i-1) * ComboxItem.Height-3)
|
|
end
|
|
item:SetData(i,self.data[i],callback,self.red_data[i])
|
|
item:SetWidth(self.img_bg.sizeDelta.x)
|
|
end
|
|
end
|
|
|
|
function ComboxView:UpdateView( )
|
|
|
|
end
|
|
|
|
function ComboxView:DestroySuccess( )
|
|
for k,v in pairs(self.item_list) do
|
|
v:DeleteMe()
|
|
end
|
|
self.item_list = {}
|
|
end
|