-- <* -- @Author: Saber -- @Description: 藏宝图:普通藏宝图奖励界面 -- *> TreasureMapNormalRollView = TreasureMapNormalRollView or BaseClass(BaseView) local TreasureMapNormalRollView = TreasureMapNormalRollView function TreasureMapNormalRollView:__init() self.base_file = "treasureMap" self.layout_file = "TreasureMapNormalRollView" self.layer_name = "Activity" self.destroy_imm = true self.use_background = true --全屏界面默认使用这个参数,非全屏界面自行设置 self.hide_maincancas = false --全屏界面需要隐藏主UI self.change_scene_close = true --是否切换场景时关闭(弹出界面使用) self.append_to_ctl_queue = false --是否要添加进界面堆栈 self.model = TreasureMapModel:getInstance() self.shine_time = 4 self.show_delay_end_time = 0.3 self.auto_close_time = 10 -- 几秒后自动关闭 self.load_callback = function () self:LoadSuccess() self:AddEvent() end self.open_callback = function ( ) self:UpdateView() end self.destroy_callback = function ( ) self:DestroySuccess() end end function TreasureMapNormalRollView:Open(reward_data) self.reward_data = reward_data BaseView.Open(self) end function TreasureMapNormalRollView:LoadSuccess() local nodes = { "bg:raw", "close_btn:obj", "icon_con:cg", "light:imgex", "comfirm_btn:obj", "auto_close:tmp", } self:GetChildren(nodes) lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetTreasureMapImage("tm_nor_bg")) self.awardItem = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.icon_con) self.awardItem:SetItemSize(78, 78) self.awardItem:SetAnchoredPosition(0, 0) end function TreasureMapNormalRollView:AddEvent() local function click_event(target) if target == self.close_btn_obj then -- 关闭按钮 self:Close() elseif target == self.comfirm_btn_obj then -- 确认按钮 self:Close() end end AddClickEvent(self.close_btn_obj, click_event) AddClickEvent(self.comfirm_btn_obj, click_event) end function TreasureMapNormalRollView:UpdateView() self:UpdateBasicData() self:StartTreasureOpenAnim() end -- 加载基础数据 function TreasureMapNormalRollView:UpdateBasicData( ) local reward_cfg = Config.Treasuremaprewards[self.reward_data.reward_id] local reward = reward_cfg and stringtotable(reward_cfg.rewards)[1] or {} local goods_Id, lock = GoodsModel:getInstance():GetMappingTypeId(reward[1] , reward[2]) self.awardItem:SetData(goods_Id, reward[3], nil, nil, lock) end -- 打开的宝箱做出动画表现 function TreasureMapNormalRollView:StartTreasureOpenAnim( ) self.is_animating = true local show_delay_end = cc.DelayTime.New(self.show_delay_end_time) -- 光束闪烁表现 local function action_light_show_alpha_func(percent) self.light_imgex.alpha = percent end local function action_light_hide_alpha_func(percent) self.light_imgex.alpha = 1 - percent end -- local total_shine_time = 0 local action_tb = {} -- for k = 1, self.shine_time do -- math.randomseed(os.time() + 2 * k) -- local random_time = math.random(3, 15) * 0.01 -- action_tb[#action_tb+1] = cc.CustomUpdate.New(random_time, action_light_show_alpha_func) -- total_shine_time = total_shine_time + random_time -- math.randomseed(os.time() + 2 * k + 1) -- random_time = math.random(3, 15) * 0.01 -- action_tb[#action_tb+1] = cc.CustomUpdate.New(random_time, action_light_hide_alpha_func) -- total_shine_time = total_shine_time + random_time -- end action_tb[#action_tb+1] = show_delay_end local action_shine_show_final = cc.CustomUpdate.New(0.5, action_light_show_alpha_func) action_tb[#action_tb+1] = action_shine_show_final local action_light = cc.Sequence.New(unpack(action_tb)) cc.ActionManager:getInstance():addAction(action_light, self.light) -- 奖励淡出表现 local function icon_con_alpha_func(percent) self.icon_con_cg.alpha = percent end local function animation_end_func() -- 动画结束之后,弹出倒计时和关闭按钮 self.is_animating = false self.close_btn_obj:SetActive(true) self.comfirm_btn_obj:SetActive(true) self:StartAutoCloseTimer() end local action_icon_con_show = cc.CustomUpdate.New(0.5, icon_con_alpha_func) -- local action_icon_con = cc.Sequence.New(cc.DelayTime.New(total_shine_time + self.show_delay_end_time), -- action_icon_con_show, cc.CallFunc.New(animation_end_func)) local action_icon_con = cc.Sequence.New(show_delay_end, action_icon_con_show, cc.CallFunc.New(animation_end_func)) cc.ActionManager:getInstance():addAction(action_icon_con, self.icon_con) end -- 自动关闭倒计时 function TreasureMapNormalRollView:StartAutoCloseTimer( ) local end_time = TimeUtil:getServerTime() + self.auto_close_time local function auto_close_time_func() local left_time = end_time - TimeUtil:getServerTime() if left_time > 0 then self.auto_close_tmp.text = string.format("%s 秒后自动关闭", ColorUtil.GREEN_DARK, left_time) else self:Close() end end if not self.auto_close_time_func_id then self.auto_close_time_func_id = GlobalTimerQuest:AddPeriodQuest(auto_close_time_func, 0.5, -1) end end function TreasureMapNormalRollView:DestroySuccess( ) if self.awardItem then UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.awardItem) self.awardItem = nil end if self.auto_close_time_func_id then GlobalTimerQuest:CancelQuest(self.auto_close_time_func_id) self.auto_close_time_func_id = nil end cc.ActionManager:getInstance():removeAllActionsFromTarget(self.light) cc.ActionManager:getInstance():removeAllActionsFromTarget(self.icon_con) self.model._check_tm_tips = TreasureMapConst.Normal self.model:CheckTreasureTipUseViewOpen() end