|
|
- 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
|