SceneSpecialTipView = SceneSpecialTipView or BaseClass(BaseView) local SceneSpecialTipView = SceneSpecialTipView function SceneSpecialTipView:__init() self.base_file = "common" self.layout_file = "SceneSpecialTipView" self.layer_name = "Main" self.close_mode = CloseMode.CloseVisible self.destroy_imm = false self.use_background = false self.append_to_ctl_queue = false --是否要添加进界面堆栈 self.need_show_money = false --是否要显示顶部的金钱栏 self.particle_mgr = ParticleManager:getInstance() self.taskShowList = {} --队列 self.task_effect_loaded_flag = {} self.isShowTask = false self.wait_show_list = {} --所有等待显示队列 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 SceneSpecialTipView:Open(data) self.data = data BaseView.Open(self) end function SceneSpecialTipView:LoadSuccess() self.nodes = { --"task_icon:img:obj", "up_grade_icon:img:obj", "up_grade_effect:obj", "accept_effect_cont:obj", "complete_effect_cont:obj", "ball_buff:obj:img", } self:GetChildren(self.nodes) --设置sceneView的自适应 --self.transform.sizeDelta = Vector2(ScreenWidth, ScreenHeight) SetAnchoredPosition(self.transform, 0, 0) --SetAnchoredPosition(self.task_icon, 0, ScreenHeight / 3 - 165) end function SceneSpecialTipView:AddEvent() end function SceneSpecialTipView:OpenSuccess() self:UpdateTips(self.data) end function SceneSpecialTipView:UpdateTips(data) self.data = data --[[ type : isAccept: ]] if self.is_playing_level_up_effect or self.isShowTask then table.insert(self.wait_show_list, data) return end if self.data.type == SceneSpecialTipType.upgrade then -- self:AddUIEffect("ui_effcet_rolelvup",self.up_grade_effect, self.layer_name, nil, 1, false) -- local data = { -- resname = "ui_effcet_rolelvup", -- uiTranform = self.up_grade_effect, -- layer_name = self.layer_name, -- scale = 1, -- is_loop = false, -- } -- self:AddUIEffectByTime(data,0.1,"SceneSpecialTipView_ui_effcet_rolelvup") if self.is_playing_level_up_effect then return end self.is_playing_level_up_effect = true if not self.has_load_level_up_effect then self.has_load_level_up_effect = true self:AddUIEffect("ui_effcet_rolelvup", self.up_grade_effect, self.layer_name, nil, 1, false, -1) else self.up_grade_effect_obj:SetActive(true) end if self.scene_upgrade_effect_id then self.particle_mgr:DelEffect(self.scene_upgrade_effect_id) self.scene_upgrade_effect_id = false end local main_role = Scene.Instance.main_role if main_role then self.scene_upgrade_effect_id = self.particle_mgr:AddTargetEffect("effect_rolelvup", main_role.compress_id, true, nil, nil, 7) end local function on_reset( ) self.is_playing_level_up_effect = false self.up_grade_effect_obj:SetActive(false) self:CheckNextShow() end if self.delay_id2 then GlobalTimerQuest:CancelQuest(self.delay_id2) self.delay_id2 = nil end self.delay_id2 = setTimeout(on_reset, 1) lua_soundM:PlayUIEffectSound(LuaSoundManager.SOUND_UI.LEVELUP) elseif self.data.type == SceneSpecialTipType.task then --接受任务不显示 if not self.data.isAccept then self:SetTaskShow(self.data.isAccept) end -- elseif self.data.type == SceneSpecialTipType.ballBuff then -- self.ball_buff_obj:SetActive(true) -- lua_resM:setImageSprite(self, self.ball_buff_img, "dungeonPet_asset","dun_pet_buff_"..self.data.buff_id,true) -- local function delay_close( ) -- self:Close() -- end -- -- self.delay_close_view_timer = GlobalTimerQuest:AddDelayQuest(delay_close,0.6) -- -- local scaleAction = cc.ScaleTo.New(0.2, 1, 1, 1) -- local moveAction = cc.MoveTo.createAnchoredType(0.6, 0, 85) -- local callfun1 = cc.CallFunc.New(delay_close) -- local action = cc.Sequence.New(moveAction,cc.DelayTime.New(1), callfun1) -- cc.ActionManager:getInstance():addAction(action, self.transform) end end function SceneSpecialTipView:SetTaskShow( whichNext ) if self.taskShowList and #self.taskShowList >= 2 then return end table.insert(self.taskShowList,whichNext) if self.isShowTask == false then self:TakShowAnimation() end end function SceneSpecialTipView:TakShowAnimation() if #self.taskShowList <= 0 then self.isShowTask = false return end self.isShowTask = true local effect_name = "ui_effcet_complete" local effect_cont = self.accept_effect_cont if self.taskShowList[1] then effect_name = "ui_effcet_accepttask" effect_cont = self.complete_effect_cont end if not self.task_effect_loaded_flag[effect_name] then self.task_effect_loaded_flag[effect_name] = true self:AddUIEffect(effect_name, effect_cont, self.layer_name, nil, 1, false, -1) else effect_cont.gameObject:SetActive(true) end if effect_name == "ui_effcet_complete" then lua_soundM:PlayUIEffectSound(LuaSoundManager.SOUND_UI.UPGRADE) end local function delay( ) table.remove(self.taskShowList,1) if not IsNull(effect_cont) then effect_cont.gameObject:SetActive(false) end self.isShowTask = false self:CheckNextShow() end if self.delay_id then GlobalTimerQuest:CancelQuest(self.delay_id) self.delay_id = nil end self.delay_id = setTimeout(delay, 1) end function SceneSpecialTipView:DestroySuccess( ) cc.ActionManager:getInstance():removeAllActionsFromTarget(self.transform) if self.delay_id then GlobalTimerQuest:CancelQuest(self.delay_id) self.delay_id = nil end self:ClearUIEffect(self.accept_effect_cont) self:ClearUIEffect(self.complete_effect_cont) self:ClearUIEffect(self.up_grade_effect) if self.scene_upgrade_effect_id then self.particle_mgr:DelEffect(self.scene_upgrade_effect_id) self.scene_upgrade_effect_id = false end GlobalTimerQuest:CancelQuest(self.delay_timer_id) self.delay_timer_id = nil if self.delay_close_view_timer then GlobalTimerQuest:CancelQuest(self.delay_close_view_timer) self.delay_close_view_timer = nil end if self.delay_id2 then GlobalTimerQuest:CancelQuest(self.delay_id2) self.delay_id2 = nil end self.wait_show_list = {} end function SceneSpecialTipView:CheckNextShow() if #self.wait_show_list > 0 then local d = table.remove(self.wait_show_list, 1) self:UpdateTips(d) end end