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
|