-- <* -- @Author: huangcong -- @Description: 公会竞速称号变化的弹出提示界面 -- *> AchieveGuildSpeedTipsView = AchieveGuildSpeedTipsView or BaseClass(BaseView) local AchieveGuildSpeedTipsView = AchieveGuildSpeedTipsView function AchieveGuildSpeedTipsView:__init() self.base_file = "achievement" self.layout_file = "AchieveGuildSpeedTipsView" self.layer_name = "Main" self.destroy_imm = true self.use_background = false --全屏界面默认使用这个参数 self.change_scene_close = true self.is_animating = false -- 是否在动画中 self.hide_time = 100 -- n秒后播放界面隐藏动画 self.awardItem_list = {} self.receive_flag = nil -- 读取完界面数据后,用于发送领取协议的关键键值 self.model = AchieveModel:getInstance() self.model.tip_view_show = true self.load_callback = function () self:LoadSuccess() self:AddEvent() end self.open_callback = function ( ) self:OpenSuccess() end self.destroy_callback = function ( ) self:DestroySuccess() end end function AchieveGuildSpeedTipsView:Open(data) self.data = data BaseView.Open(self) end --重用界面,5秒后再销毁 function AchieveGuildSpeedTipsView:ResetViewInfo(data) self.data = data self.transform.anchoredPosition = Vector2(-3.5, 61.5) self.receive_flag = nil self.gameObject:SetActive(true) if self.delay_closeview_id then TimerQuest.CancelQuest(GlobalTimerQuest,self.delay_closeview_id) self.delay_closeview_id = nil end self:UpdateView() -- 更新数据 self:StartCloseTimer() -- 开始对界面的关闭进行计时 self:OpenAnimation() -- 播放打开界面的动画 end function AchieveGuildSpeedTipsView:LoadSuccess() local nodes = { "bg:img", -- 成就完成弹窗相关 "achieve_tip:obj", "achieve_tip/achi_receive_btn:obj", -- 成就领取按钮 "achieve_tip/achi_desc:tmp", "achieve_tip/achi_name:tmp", -- 成就信息 -- 章节完成弹窗相关 -- 其他 "close_timer:tmp", "designImg:img",--称号容器 "closeBtn:obj", "designationText:tmp", } self:GetChildren(nodes) lua_resM:setOutsideImageSprite(self, self.bg_img, GameResPath.GetViewBigBg("guildSpeedAct_tip_bg"), true) self.canvasGroup = self.gameObject:GetComponent("CanvasGroup") self.transform.anchoredPosition = Vector2(0, 360) self.achi_name_tmp.text = "获得称号" self.achieve_tip_obj:SetActive(true) end function AchieveGuildSpeedTipsView:AddEvent() local function click_event(target) self:ClearHideTimer() self:AutoCloseFunc() end AddClickEvent(self.achi_receive_btn_obj, click_event) AddClickEvent(self.closeBtn_obj, click_event) end function AchieveGuildSpeedTipsView:OpenSuccess() self:UpdateView() self:StartCloseTimer() self:OpenAnimation() -- 播放打开界面的动画 end function AchieveGuildSpeedTipsView:UpdateView() if self.data.rank and self.data.goods_id then local goods_name = GoodsModel:getInstance():getGoodsName(self.data.goods_id, true) self.achi_desc_tmp.text = string.format("获得社团竞榜排名第%s名\n激活称号 %s",self.data.rank,goods_name) self:UpdateDesignShow(self.data.goods_id,self.designImg,self.designImg_img,self.designationText_tmp) end end function AchieveGuildSpeedTipsView:UpdateDesignShow( goods_id,designation_image,designation_image_img,designation_text_tmp ) if not goods_id then return end local designation_id = DesignationModel:GetInstance():GetDesignationIdByGoodsId(goods_id) local dsgt_cfg = Config.Dsgt local power = DesignationModel:GetInstance():GetDesignationPowerById(designation_id) if self.dynamic_image_obj then self.dynamic_image_obj:SetActive(false) end if dsgt_cfg[designation_id] then designation_image.gameObject:SetActive(true) if dsgt_cfg[designation_id].type == 1 then--文字称号(文字称号也用图片了) designation_image.gameObject:SetActive(true) lua_resM:setOutsideImageSprite(self, designation_image_img, GameResPath.GetDesignImage(designation_id), true) designation_text_tmp.text = "" elseif dsgt_cfg[designation_id].type == 2 then--图片称号 designation_image.gameObject:SetActive(true) lua_resM:setOutsideImageSprite(self, designation_image_img, GameResPath.GetDesignImage(designation_id), true) designation_text_tmp.text = "" elseif dsgt_cfg[designation_id].type == 3 then--特效称号 if not self.dynamic_image_obj then self.dynamic_image_obj = UiFactory.createChild(designation_image, UIType.Image, "dynamic_image") self.dynamic_image_img = self.dynamic_image_obj:GetComponent("Image") self.dynamic_image = self.dynamic_image_obj.transform SetAnchoredPosition(self.dynamic_image,0,0) else self.dynamic_image_obj:SetActive(true) end designation_image.gameObject:SetActive(true) local data = DesignationModel:GetInstance():GetDynamicDesignationCFG(designation_id) designation_text_tmp.text = "" local res = Split(data[1].res,"_")--分割出来配置 然后取文字 local font_res = res[1] or "" lua_resM:setImageSprite(self, self.dynamic_image_img, data[1].ab, font_res.."_font", false) local action = cc.Animation.New(data,0.15) cc.ActionManager:getInstance():addAction(cc.RepeatForever.New(action),designation_image) end end cc.ActionManager:getInstance():removeAllActionsFromTarget(designation_image) end -- 开始界面关闭的倒计时 function AchieveGuildSpeedTipsView:StartCloseTimer() self:ClearHideTimer() local end_time = self.hide_time + TimeUtil:getServerTime() local function hide_timer() local left_time = end_time - TimeUtil:getServerTime() self.close_timer_tmp.text = left_time >= 0 and string.format("(%s秒后自动确认)", math.ceil(left_time+1)) or "" if left_time < 0 then self:ClearHideTimer() self:AutoCloseFunc() end end hide_timer() self.hide_timer_id = GlobalTimerQuest:AddPeriodQuest(hide_timer, 0.1, -1) -- 设置动画标志量 self.is_animating = true end function AchieveGuildSpeedTipsView:ClearHideTimer( ) if self.hide_timer_id then GlobalTimerQuest:CancelQuest(self.hide_timer_id) self.hide_timer_id = nil end end function AchieveGuildSpeedTipsView:AutoCloseFunc( ) local function callback() self:ClearHideTimer() self.gameObject:SetActive(false) local function delay_closeview( ) BaseView.Close(self) end self.delay_closeview_id = setTimeout(delay_closeview, 5) -- 设置动画标志量 self.is_animating = false end self:CloseAnimation(callback) end -- 播放打开界面的动画 function AchieveGuildSpeedTipsView:OpenAnimation() self.canvasGroup.alpha = 0 if self.alpha_anim_id then TweenLite.Stop(self.alpha_anim_id) self.alpha_anim_id = nil end self.alpha_anim_id = TweenLite.to(self, self.canvasGroup, TweenLite.UiAnimationType.ALPHA, 1, 0.2) end -- 关闭(隐藏)界面的动画 function AchieveGuildSpeedTipsView:CloseAnimation(callback) self.canvasGroup.alpha = 1 if self.alpha_anim_id then TweenLite.Stop(self.alpha_anim_id) self.alpha_anim_id = nil end self.alpha_anim_id = TweenLite.to(self, self.canvasGroup,TweenLite.UiAnimationType.ALPHA, 0, 0.5) local pos_y = self.transform.anchoredPosition.y + 100 if self.pos_id then TweenLite.Stop(self.pos_id) self.pos_id = nil end self.pos_id = TweenLite.to(self, self.transform, TweenLite.UiAnimationType.ANCHORED_POSY, pos_y, 0.5, callback) end function AchieveGuildSpeedTipsView:DestroySuccess( ) self.model.tip_view_show = false self:ClearHideTimer() if self.delay_closeview_id then TimerQuest.CancelQuest(GlobalTimerQuest,self.delay_closeview_id) self.delay_closeview_id = nil end if self.alpha_anim_id then TweenLite.Stop(self.alpha_anim_id) self.alpha_anim_id = nil end if self.pos_id then TweenLite.Stop(self.pos_id) self.pos_id = nil end for i,item in pairs(self.awardItem_list) do UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, item) end self.awardItem_list = {} end