FuliLimitPackageNumItem = FuliLimitPackageNumItem or BaseClass(BaseItem) function FuliLimitPackageNumItem:__init(parent_wnd, prefab_asset, layer_name) self.base_file = "fuli" self.layout_file = "FuliLimitPackageNumItem" self.is_delay_callback = true self.data = false self.time = false self.loop_mgr = LoopScrowViewMgr.New() self.item_list = {} self.tween_id = false self:Load() end function FuliLimitPackageNumItem:Load_callback() local nodes = { "ScrollView", "ScrollView/Viewport/Content", } self:GetChildren(nodes) self:InitEvent() if self.need_refreshData then self:SetData(self.data, self.time) end end function FuliLimitPackageNumItem:InitEvent() end function FuliLimitPackageNumItem:SetData(data, time) self.data = data self.time = time if self.is_loaded then self:UpdateView() else self.need_refreshData = true end end function FuliLimitPackageNumItem:__delete() if self.loop_mgr then self.loop_mgr:DeleteMe() self.loop_mgr = nil end for i = 1,#self.item_list do self.item_list[i]:DeleteMe() end self.item_list = {} if self.tween_id then TweenLite.Stop(self.tween_id) end self.tween_id = false if self.timer_update then TimerQuest.CancelQuest(GlobalTimerQuest, self.timer_update) self.timer_update = nil end end function FuliLimitPackageNumItem:UpdateView() self.data_list_num = self.time * 30 + self.data for k = 1,3 do local item = self.item_list[k] if item == nil then item = FuliLimitPackageNumTextItem.New(self.Content,nil,self.maskID) self.item_list[k] = item end end self.loop_mgr:Init(self.ScrollView,self.Content,1,15,25,function(item,index,realIndex ) self:OnInitializeItem(item,index,realIndex) end, 0, 0) self.loop_mgr:InitChildren(self.item_list, self.data_list_num) self.loop_mgr:RestToBeginning() self.loop_mgr:SetContentSizeData() end function FuliLimitPackageNumItem:OnInitializeItem(item,index,realIndex) if item and realIndex > 0 and realIndex <= self.data_list_num then if self.data_list_num == realIndex then item:SetData(self.data) else item:SetData(realIndex%10) end if not self.tween_id then local function end_func( ) if self.tween_id then TweenLite.Stop(self.tween_id) end self.tween_id = false if self.timer_update then TimerQuest.CancelQuest(GlobalTimerQuest, self.timer_update) self.timer_update = nil end end self.tween_id = TweenLite.to(self,self.Content, TweenLite.UiAnimationType.POSY, (self.data_list_num - 1) *(25), 3, end_func, TweenFunc.EASE_OUT, false) local function timer_func() if self.tween_id then self.loop_mgr.mNeedToWrap = true self.loop_mgr:WrapContent() end end self.timer_update = TimerQuest.AddPeriodQuest(GlobalTimerQuest, timer_func, 0.02) end end end