|
|
--展示在界面左侧的带角色的specialtip样式
|
|
|
|
SpecialTipViewTwo = SpecialTipViewTwo or BaseClass(BaseView)
|
|
|
|
local SpecialTipViewTwo = SpecialTipViewTwo
|
|
local TimeUtil = TimeUtil
|
|
function SpecialTipViewTwo:__init()
|
|
self.base_file = "common"
|
|
self.layout_file = "SpecialTipViewTwo"
|
|
-- 计时器里面会跑到的model,都要在这里注册,减少对_G表的搜索
|
|
self.scene_mgr = SceneManager:getInstance()
|
|
self.dungeon_model = BaseDungeonModel:getInstance()
|
|
self.layer_name = "Main"
|
|
self.destroy_imm = true
|
|
self.use_background = false
|
|
self.change_scene_close = true
|
|
self.append_to_ctl_queue = false --是否要添加进界面堆栈
|
|
self.need_show_money = false --是否要显示顶部的金钱栏
|
|
|
|
self.load_callback = function ()
|
|
self:LoadSuccess()
|
|
self:AddEvent()
|
|
end
|
|
self.open_callback = function ( )
|
|
self:OpenSuccess()
|
|
end
|
|
self.destroy_callback = function ( )
|
|
self:DestroySuccess()
|
|
end
|
|
end
|
|
|
|
-- data = {
|
|
-- type, -- 类型 默认1 1=显示文本定时关闭 2=持续显示倒计时类型1(必须写sepeical_str,且只带一个%s用来展示时间)
|
|
-- module_id,--模块id
|
|
-- id,--子模块,与module_id共同使用来寻找Config.Languageextra中的提示语
|
|
-- sepeical_str,--强制显示文本,传了次文本时,不找配置,直接显示文本内容
|
|
-- show_time,--显示时长,时间过后会关闭tipview,nil或false时tipview需要发送事件手动关闭
|
|
-- need_flash,--是否需要闪动
|
|
-- bg_type,--传1则为红底,否则默认蓝底
|
|
-- breath_call_back,--呼吸模式结束后的回调
|
|
-- end_time_callback,--倒计时结束之后的回调
|
|
-- }
|
|
function SpecialTipViewTwo:InitTipData(data)
|
|
self.module_id = data.module_id
|
|
self.id = data.id
|
|
self.sepeical_str = data.sepeical_str
|
|
self.show_time = data.show_time
|
|
self.need_flash = data.need_flash
|
|
self.type = data.type or SpecialTipType.Normal
|
|
if self.end_time_callback then
|
|
self.end_time_callback()
|
|
end
|
|
self.end_time_callback = data.end_time_callback
|
|
self.bg_type = data.bg_type or nil
|
|
self.breath_call_back = data.breath_call_back or nil
|
|
|
|
self.change_bg_flag = false--宠物副本用:是否换过背景
|
|
self.need_change_bg = data.need_change_bg--是否需要换背景
|
|
self.sepeical_str2 = data.sepeical_str2
|
|
end
|
|
function SpecialTipViewTwo:Open(data,layout_file_type,layer_name)
|
|
|
|
-- if layout_file_type and self.layout_file_type ~= layout_file_type then --类型不同的预制体要重新打开界面
|
|
-- self:Close()
|
|
-- CommonController.Instance:Fire(EventName.OPEN_SpecialTipViewTwo, data,layout_file_type, layer_name)
|
|
-- return
|
|
-- elseif layer_name and self.layer_name ~= layer_name then --层级不同的也要重新打开界面
|
|
-- self:Close()
|
|
-- CommonController.Instance:Fire(EventName.OPEN_SpecialTipViewTwo, data,layout_file_type, layer_name)
|
|
-- return
|
|
-- end
|
|
|
|
self:InitTipData(data)
|
|
BaseView.Open(self)
|
|
end
|
|
|
|
function SpecialTipViewTwo:LoadSuccess()
|
|
self.nodes = {
|
|
"di_con/label_tip:txt", "di_con/di_tip:raw:obj","di_con",
|
|
}
|
|
self:GetChildren(self.nodes)
|
|
self.di_con_canvas = self.di_con:GetComponent("CanvasGroup")
|
|
|
|
|
|
--设置sceneView的自适应
|
|
-- self.transform.sizeDelta = Vector2(ScreenWidth, ScreenHeight)
|
|
SetAnchoredPosition(self.transform, 0, 0)
|
|
end
|
|
|
|
function SpecialTipViewTwo:AddEvent()
|
|
|
|
end
|
|
|
|
function SpecialTipViewTwo:OpenSuccess()
|
|
self:UpdateView()
|
|
--不设置显示时间时不会自动关闭界面
|
|
if not self.show_time then return end
|
|
local function clockFun()
|
|
self.show_time = self.show_time or 0
|
|
if self.show_time <= 0 then
|
|
self:Close()
|
|
end
|
|
self.show_time = self.show_time - 1
|
|
end
|
|
if not self.close_time_id then
|
|
self.close_time_id = GlobalTimerQuest:AddPeriodQuest(clockFun, 1, -1)
|
|
if self.need_flash then
|
|
self.di_con_canvas.alpha = 0
|
|
self:FlashHideCall()
|
|
end
|
|
end
|
|
end
|
|
|
|
function SpecialTipViewTwo:FlashShowCall( )
|
|
if self._use_delete_method then
|
|
return
|
|
end
|
|
if self.di_con then
|
|
local function callback( )
|
|
self:FlashHideCall()
|
|
end
|
|
self.di_tip_img_anim_id = TweenLite.to(self, self.di_con_canvas, TweenLite.UiAnimationType.ALPHA, 1, 0.8, callback)
|
|
-- self.label_tip_txt_anim_id = TweenLite.to(self, self.label_tip_txt, TweenLite.UiAnimationType.ALPHA_OLD, 1, 0.8, nil)
|
|
end
|
|
end
|
|
|
|
function SpecialTipViewTwo:FlashHideCall( )
|
|
if self._use_delete_method then
|
|
return
|
|
end
|
|
if self.di_tip then
|
|
local function callback( )
|
|
self:FlashShowCall()
|
|
end
|
|
if not self.delay_hide_id then
|
|
local function delay( )
|
|
self:RemoveDelayHideId()
|
|
self.di_tip_img_anim_id = TweenLite.to(self, self.di_con_canvas, TweenLite.UiAnimationType.ALPHA, 0.5, 0.5, callback)
|
|
-- self.label_tip_txt_anim_id = TweenLite.to(self, self.label_tip_txt, TweenLite.UiAnimationType.ALPHA_OLD, 0.5, 0.5, nil)
|
|
end
|
|
self.delay_hide_id = setTimeout(delay,0.2)
|
|
end
|
|
end
|
|
end
|
|
|
|
function SpecialTipViewTwo:GetLabelInfo( )
|
|
if not self.sepeical_str then
|
|
local module_id = self.module_id or 0
|
|
local id = self.id or 0
|
|
local cfg = Config.Languageextra[module_id .. "@" .. id]
|
|
return (cfg and cfg.content) and Trim(cfg.content) or "警报!前方高能!"
|
|
else
|
|
return self.sepeical_str
|
|
end
|
|
end
|
|
|
|
function SpecialTipViewTwo:UpdateView()
|
|
lua_resM:setOutsideRawImage(self, self.di_tip_raw, GameResPath.GetRoleBg("special_tip_di_2"), false)
|
|
|
|
SetAnchoredPosition(self.transform,0,0)
|
|
local info = self:GetLabelInfo() or ""
|
|
if self.type == SpecialTipType.Normal then
|
|
self.label_tip_txt.text = info
|
|
-- 动态拓展倒计时的类型,就放在这里面,原则上倒计时类型可使用同一个self.tip_type_timer_id来保存计时器id
|
|
elseif self.type == SpecialTipType.Timer1 then
|
|
self:StartTimerType1()
|
|
end
|
|
end
|
|
-- 类型1计时器
|
|
function SpecialTipViewTwo:StartTimerType1( )
|
|
local end_time = self:GetTimerTypeEndTime()
|
|
local druation_speed = self:GetTimerTypeDurationSpeed()
|
|
local left_time
|
|
local function tipTypeTimer1Func()
|
|
left_time = end_time - TimeUtil:getServerTime()
|
|
left_time = left_time > 0 and left_time or 0
|
|
|
|
self.label_tip_txt.text = string.format(self.sepeical_str, TimeUtil:convertTimeWithoutHour(left_time))
|
|
|
|
if left_time <= 0 and self.end_time_callback then
|
|
self.end_time_callback()
|
|
self.end_time_callback = nil
|
|
end
|
|
end
|
|
self.tip_type_timer_id = GlobalTimerQuest:AddPeriodQuest(tipTypeTimer1Func, druation_speed, -1)
|
|
end
|
|
|
|
-- 当出现多个Tip同时发过来的时候做覆盖处理,最后一个发过来的作为当前显示
|
|
function SpecialTipViewTwo:UpdateTips(data)
|
|
|
|
self:InitTipData(data)
|
|
|
|
-- 清除掉所有事件
|
|
self:RemoveCloseTimeId()
|
|
self:RemoveDelayHideId()
|
|
self:RemoveTimerTypeId()
|
|
self:StopAllAnim()
|
|
-- 初始化所有文本
|
|
self:InitAllText()
|
|
-- 重置UI状态
|
|
-- self.di_tip_img.alpha = 0.8
|
|
-- SetAlpha(self.label_tip_txt, 0.8)
|
|
|
|
self:UpdateView()
|
|
--不设置显示时间时不会自动关闭界面
|
|
if not self.show_time then return end
|
|
-- 重新开始计时
|
|
local function clockFun()
|
|
self.show_time = self.show_time or 0
|
|
if self.show_time <= 0 then
|
|
self:Close()
|
|
end
|
|
self.show_time = self.show_time - 1
|
|
end
|
|
if not self.close_time_id then
|
|
self.close_time_id = GlobalTimerQuest:AddPeriodQuest(clockFun, 1, -1)
|
|
if self.need_flash then
|
|
self:FlashHideCall()
|
|
end
|
|
end
|
|
end
|
|
|
|
-- 初始化所有的文本
|
|
function SpecialTipViewTwo:InitAllText( )
|
|
self.label_tip_txt.text = ""
|
|
end
|
|
|
|
function SpecialTipViewTwo:RemoveCloseTimeId( )
|
|
if self.close_time_id then
|
|
GlobalTimerQuest:CancelQuest(self.close_time_id)
|
|
self.close_time_id = nil
|
|
end
|
|
end
|
|
|
|
function SpecialTipViewTwo:RemoveDelayHideId( )
|
|
if self.delay_hide_id then
|
|
GlobalTimerQuest:CancelQuest(self.delay_hide_id)
|
|
self.delay_hide_id = nil
|
|
end
|
|
end
|
|
|
|
function SpecialTipViewTwo:RemoveTimerTypeId( )
|
|
if self.tip_type_timer_id then
|
|
GlobalTimerQuest:CancelQuest(self.tip_type_timer_id)
|
|
self.tip_type_timer_id = nil
|
|
end
|
|
end
|
|
|
|
function SpecialTipViewTwo:StopAllAnim( )
|
|
if self.di_tip_img_anim_id then
|
|
TweenLite.Stop(self.di_tip_img_anim_id)
|
|
self.di_tip_img_anim_id = nil
|
|
end
|
|
end
|
|
|
|
function SpecialTipViewTwo:DestroySuccess( )
|
|
self:RemoveCloseTimeId()
|
|
self:RemoveDelayHideId()
|
|
self:RemoveTimerTypeId()
|
|
end
|