FuliSignView = FuliSignView or BaseClass(BaseItem) local FuliSignView = FuliSignView function FuliSignView:__init() self.base_file = "fuli" self.layout_file = "FuliSignView" self.model = FuliModel:GetInstance() self.total_reward_item = {} self.is_first = true self:Load() end function FuliSignView:Load_callback() self.nodes = { "down_image:obj", "item_scroll", "item_scroll/Viewport/item_con", "girl:raw", "reward_con", "sign_day:tmp", } self:GetChildren(self.nodes) lua_resM:setOutsideRawImage(self, self.girl_raw, GameResPath.GetRoleBg("fuli_sign_girl_508_715"), false) self:AddEvents() if self.need_refreshData then self:UpdateView() end end function FuliSignView:AddEvents( ) local function on_update_view( ) self:UpdateView() end self.on_update_view_id = self.model:BindOne("fuli_sign_info", on_update_view) end function FuliSignView:UpdateView( ) self.data = self.model:GetFuliSignInfo() if TableSize(self.data) == 0 then return end self.cfg = self.model:GetFuliSignCFGByRound(self.data.round) if not self.item_list_com then self.item_list_com = self:AddUIComponent(UI.ItemListCreator) end -- self.item_list_com:Reset() local function set_depth( ) self.item_list_com:IterateItems(function ( item, i ) item:SetDepth(i) end) end local info = { data_list = self.cfg, item_con = self.item_con, item_class = FuliSignItem, item_width = 135, item_height = 154, space_x = 3, space_y = 0, start_x = 0, start_y = 0, scroll_view = self.item_scroll, create_frequency = 0.02, is_scroll_back_on_update = false, final_callback = set_depth, on_update_item = function(item, i, v) item:SetData(i, v, self.data) end, } self.item_list_com:UpdateItems(info) if self.is_first and TableSize(self.data) > 0 then self.is_first = false self.item_list_com:ScrollToItem(self.data.days + 1) end self:UpdateTotalSignRewardItem() self.sign_day_tmp.text = string.format("累计签到:%s", HtmlColorTxt(self.data.days .. " 天", "#2cf86f")) end function FuliSignView:UpdateTotalSignRewardItem( ) local data = self.model:GetFuliTotalSignCFGByRound(self.data.round or 1) for i=1,5 do local item = self.total_reward_item[i] if not item then item = FuliSignRewardItem.New(self.reward_con) item:SetPosition((i-1)*136,0) self.total_reward_item[i] = item end item:SetData(data[i], self.data, i) end end function FuliSignView:SetData( ) if self.is_loaded then self.need_refreshData = false self:UpdateView() else self.need_refreshData = true end end function FuliSignView:__delete( ) if self.on_update_view_id then self.model:UnBind(self.on_update_view_id) self.on_update_view_id = nil end end