源战役客户端
Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 
 
 
 

137 righe
3.5 KiB

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