源战役客户端
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.
 
 
 
 
 

76 rivejä
1.7 KiB

BarrageView = BarrageView or BaseClass(BaseView)
function BarrageView:__init()
self.base_file = "common"
self.layout_file = "BarrageView"
self.layer_name = "Main"
self.destroy_imm = false
self.change_scene_close = true
self.playing_list = {}
self.item_pool = Array.New()
self.data_list = Array.New()
self.open_callback = function()
self:ResetView()
end
self.load_callback = function()
self:LoadSuccess()
end
self.destroy_callback = function ()
self:Remove()
end
end
function BarrageView:Remove()
self.item_pool = {}
end
function BarrageView:ResetView()
self.data_list = Array.New()
for k,v in ipairs(self.playing_list) do
self:RecycleItem(k)
end
self.playing_list = {}
end
function BarrageView:LoadSuccess()
self.transform:SetAsFirstSibling()
-- self.transform.sizeDelta = Vector2(ScreenWidth,ScreenHeight)
self.origin_label = self:GetChild("BarrageItem").gameObject
local fire_num = 0
for i=1,self.data_list:GetSize() do
self:AppendNewItem()
end
end
function BarrageView:AppendNewItem(data)
data = data or self.data_list:PopFront()
if not data then
self:Close()
return
end
if not self.is_loaded or TableSize(self.playing_list) >= BarrageManager:getInstance().max_count_limit then
self.data_list:PushBack(data)
else
local item
if #self.item_pool == 0 then
local function callback(item)
self:RecycleItem(item)
end
item = BarrageItem.New(self.transform, self.origin_label, callback)
else
item = self.item_pool:PopFront()
end
item.gameObject:SetActive(true)
item:SetData(data)
item:Fire()
self.playing_list[item] = true
end
end
function BarrageView:RecycleItem(item)
item:StopRunning()
item.gameObject:SetActive(false)
self.item_pool:PushBack(item)
self.playing_list[item] = nil
end