-- <* -- @Author: huangcong -- @Description: 活动右侧特殊tips弹窗 -- *> CommonActTipView = CommonActTipView or BaseClass(BaseView) local CommonActTipView = CommonActTipView function CommonActTipView:__init() self.base_file = "common" self.layout_file = "CommonActTipView" self.layer_name = "Main" self.destroy_imm = true self.use_background = false --全屏界面默认使用这个参数,非全屏界面自行设置 self.anim_time = 0.5 self.is_animating = false -- 是否在动画中 self.show_time_str = false--是否显示剩余时间 self.show_time_elapse = false --剩余时间显示 self.auto_close_time = 20--关闭时间 self.item_list = {} self.model = CommonModel:getInstance() self.load_callback = function () self:LoadSuccess() self:AddEvent() end self.open_callback = function ( ) self:UpdateView() end self.destroy_callback = function ( ) self:DestroySuccess() end end --[[ view_data = { -- 界面数据 desc = "完成首次充值领极品奖励", awardList = {}, winId = 159, subId = 1, } ]] function CommonActTipView:Open(view_data) self.view_data = view_data print("huangcong:CommonActTipView [start:43] :", self.view_data) PrintTable(self.view_data) print("huangcong:CommonActTipView [end]") BaseView.Open(self) end function CommonActTipView:LoadSuccess() local nodes = { "goBtn:obj", "timeText:tmp", "closeBtn:obj", "nameText:tmp", "iconImage:img:obj","awardScroll", "awardScroll/Viewport/awardCon", } self:GetChildren(nodes) end function CommonActTipView:AddEvent() local function click_event(target) if target == self.closeBtn_obj then self:HideAnim() -- 播放关闭效果,并检查邀请缓存 elseif target == self.goBtn_obj or target == self.iconImage_obj then if self.view_data and self.view_data.winId and self.view_data.subId then self:HideAnim() OpenFun.Open(self.view_data.winId,self.view_data.subId) end end end AddClickEvent(self.closeBtn_obj, click_event) AddClickEvent(self.goBtn_obj, click_event) local function close_event( ... ) if not self.is_loaded or self._use_delete_method then return end self:HideAnim() -- 播放关闭效果,并检查邀请缓存 end self:BindEvent(GlobalEventSystem, EventName.CLOSE_COMMON_ACT_TIPS, close_event)--更新界面 end -- 更新邀请内容 function CommonActTipView:UpdateView() self.nameText_tmp.text = self.view_data and self.view_data.desc or "" --资源可能有多个地址,默认activityIcon local ab_name, res_name = "activityIcon_asset", "" local is_out_res = false if self.view_data.winId and self.view_data.subId then local fun_vo = OpenFun.LinkWin[self.view_data.winId.."@"..self.view_data.subId] if fun_vo then res_name = fun_vo.icon_res lua_resM:setImageSprite(self, self.iconImage_img, ab_name, res_name,false) end end self:UpdateItemList() -- 动画重点坐标初始化 self.start_anim_pos_x = 378 - ClientConfig.iphone_x_offset_right self.end_anim_pos_x = 0 - ClientConfig.iphone_x_offset_right SetAnchoredPositionX(self.transform, self.start_anim_pos_x) -- 自动关闭倒计时 self:StartAutoCloseTimer() -- 播放弹出动画 self:ShowAnim() end -- 自动关闭倒计时 function CommonActTipView:StartAutoCloseTimer( ) local end_time = self.auto_close_time + TimeUtil:getServerTime( ) self:ClearAutoCloseTimer() local function auto_close_func() local left_time = end_time - TimeUtil:getServerTime( ) if left_time >= 0 then if self.view_data.end_time then self.timeText_tmp.text = HtmlColorTxt(TimeUtil:convertTime(self.view_data.end_time - TimeUtil:getServerTime( )), "#0ce148") else self.timeText_tmp.text = HtmlColorTxt(TimeUtil:convertTime(left_time), "#0ce148") end else self:ClearAutoCloseTimer() self:HideAnim() -- 播放关闭效果,并检查邀请缓存 end end self.auto_close_func_id = GlobalTimerQuest:AddPeriodQuest(auto_close_func, 1, -1) end function CommonActTipView:ClearAutoCloseTimer( ) if self.auto_close_func_id then GlobalTimerQuest:CancelQuest(self.auto_close_func_id) self.auto_close_func_id = nil end end -- 弹出动画 function CommonActTipView:ShowAnim() local function anim_callback() self.is_animating = false end self:ClearViewAnimId() self.is_animating = true self.view_anim_id = TweenLite.to(self, self.transform, TweenLite.UiAnimationType.ANCHORED_POSX, self.end_anim_pos_x, self.anim_time, anim_callback, TweenFunc.EASE_OUT_QUINT) end -- 播放关闭动画,并检测缓存是否还有其他邀请没有处理 function CommonActTipView:HideAnim() local function anim_callback() self.is_animating = false self.waiting = true local cache_count = self.model:GetActTipDataCacheCount() if cache_count > 0 then self.view_data = self.model:PopActTipDataCache() cache_count = self.model:GetActTipDataCacheCount() if self.view_data then self:UpdateView() end else self:Close() end end self:ClearViewAnimId() self.is_animating = true self.view_anim_id = TweenLite.to(self, self.transform, TweenLite.UiAnimationType.ANCHORED_POSX, self.start_anim_pos_x, self.anim_time, anim_callback, TweenFunc.EASE_OUT_QUINT) end function CommonActTipView:ClearViewAnimId( ) if self.view_anim_id then TweenLite.Stop(self.view_anim_id) self.view_anim_id = nil end end function CommonActTipView:DestroySuccess( ) for i,item in pairs(self.item_list) do UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, item) end self.item_list = {} self:ClearViewAnimId() self:ClearAutoCloseTimer() end function CommonActTipView:UpdateItemList( ) for k,v in pairs(self.item_list) do v:SetVisible(false,nil,true) end self.col_num = 3 local item_list = self.view_data.awardList if not item_list or TableSize(item_list) == 0 then return end local len = #item_list --如果比最大高度要高 那就只能滚动了 local offer_x = 1 local offer_y = -1 local space_x = 10 local space_y = 0 local item_width = 47 local x = 0 local y = 0 for i, v in ipairs(item_list) do local item = self.item_list[i] if item == nil then item = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self.awardCon) item:SetItemSize(47,47) item:SetGoodsVo(v[4]) self.item_list[i] = item end local goods_Id, lock = GoodsModel:getInstance():GetMappingTypeId(v[1], v[2]) local goodVo = GoodsModel:getInstance():GetGoodsBasicByTypeId(goods_Id) local stren_data = nil if v[4] then stren_data = EquipModel:getInstance():GetBagEquipAwaraItemInfo(v[4]) stren_data.equip_key = "EquipView" end if goodVo then item:SetData(goods_Id, v[3], goodVo.color, stren_data, lock,true,nil) else -- error("没有找到物品信息 "..v.typeId) end item:SetVisible(true,nil,true) x = (item_width+space_x)*(i-1) + offer_x y = 0 item:SetPosition(x,y) end SetSizeDeltaX(self.awardCon,#item_list*(47+10)+10) end