|
|
- SysInfoNoticeView = SysInfoNoticeView or BaseClass()
-
- SysInfoNoticeView.MAX_MSG_COUNT = 10
-
- function SysInfoNoticeView:__init()
- self.has_text = false
- self.time = 0.0
- self.item = nil
- self.speed = 800 / 6
- self.move_left_speed = 800 / 8
- self.text_len = 490
- self.start_pos_x = -243
-
- self.cur_item = false
-
- self.msg_list = Array.New()
- self.text_list = Array.New()
- self.idle_text_list = Array.New()
- self.icon = nil
- local function call_back(objs)
- self.prefab_asset = objs[0]
- self:CreateMessageContainer()
- for i=1,3 do
- self.text_list:PushBack(self.item:GetChild("mask/Text"..i))
- end
- self.icon = self.item:GetChild("bg/icon")
- self.mask = self.item:GetChild("bg/mask")
- end
- lua_resM:loadPrefab(self,"common","chuanwen", call_back)
-
- local event = function ()
- self.msg_list:Clear()
- end
-
- GlobalEventSystem:Bind(EventName.CHANGE_ACCOUNT,event)
- GlobalEventSystem:Bind(EventName.CHANGE_ROLE,event)
-
- end
-
- function SysInfoNoticeView:__delete()
- lua_resM:clearReference(self)
- self:CancelDelayTimer()
- end
-
- function SysInfoNoticeView:CancelDelayTimer( )
- if self.time_id then
- GlobalTimerQuest:CancelQuest(self.time_id)
- self.time_id = nil
- end
-
- if self.delay_move_left_time_id then
- GlobalTimerQuest:CancelQuest(self.delay_move_left_time_id)
- self.delay_move_left_time_id = nil
- end
-
- if self.delay_id then
- GlobalTimerQuest:CancelQuest(self.delay_id)
- self.delay_id = nil
- end
-
- end
-
- function SysInfoNoticeView:CreateMessageContainer()
- if self.prefab_asset then
- self.item = ChuanwenItem.New(panelMgr:GetParent("Top"),self.prefab_asset)
- self.canvasGrop = self.item.transform:GetComponent("CanvasGroup")
- end
- end
-
- function SysInfoNoticeView:AppendMessage(content)
- if self.msg_list:GetSize() >= SysInfoNoticeView.MAX_MSG_COUNT then
- self.msg_list:PopFront()
- end
- self.msg_list:PushBack(content)
- if not self.has_text then
- self:RunMessage()
- end
- end
-
- function SysInfoNoticeView:RunMessage()
- if not self.item then return end
- content = self.msg_list:PopFront()
- if not content then return end
- if SceneManager:getInstance():IsNoHornAndNoticeScene() then return end
-
- local text = self.text_list:PopFront()
- --1.所有text正在使用 2.TweenLite回调没有执行 -->把第一个text取出使用
- if not text then text = self.idle_text_list:PopFront() return end
- self.idle_text_list:PushBack(text)
-
- ---- 添加超链接
- text:GetComponent("Text").text = content
- SetInlineText(text:GetComponent("Text"), content)
- local call_fun = function (param_list)
- local chatModel = ChatModel:getInstance()
- chatModel.clicked_item = self
- chatModel.chick_hyperlink_mark = true
- chatModel:FireSpecialTab(param_list)
- end
- AddUnderLineAndClick(self, text, call_fun)
-
- --去掉超链接,去掉换行符
- --content = PackageSpecialTab(content)
- --content = string.gsub(content, "\n", "")
- --content = string.gsub(content,"<a.->","")
- --content = string.gsub(content,"</a>","")
-
-
- text.sizeDelta = Vector2(text:GetComponent("Text").preferredWidth,35)
- self.has_text = true
- self.item.gameObject:SetActive(true)
- text.gameObject:SetActive(true)
- --SetLocalPositionX(self.icon, -23-( text:GetComponent("Text").preferredWidth/2))
- --滚屏
- local pos = text.localPosition
- local tSize = self.item.transform.sizeDelta
-
- self.time = text.sizeDelta.x / self.speed
- self.time = math.max(self.time, 2)
- local left_time = 0
- local left_delay_time = 0
- if text.sizeDelta.x > self.text_len then
- left_time = (text.sizeDelta.x - self.text_len) / self.move_left_speed
- left_delay_time = 0.2
- end
-
- local item = text
- if self.tween_out_id and not self.cur_item then
- SetAnchoredPosition(item.transform, self.start_pos_x, -35 - 17.5)
- self:MoveIn(item)
- self.cur_item = item
- left_delay_time = left_time > 0 and left_delay_time + 0.5 or 0
- else
- self.cur_item = item
- SetAnchoredPosition(item.transform, self.start_pos_x, 0, - 17.5)
- end
-
- local onDelay = function ( )
- self.text_list:PushBack(self.idle_text_list:PopFront())
- if self.msg_list:GetSize() <= 0 then
- self.item.gameObject:SetActive(false)
- self.cur_item.gameObject:SetActive(false)
- self.has_text = false
- else
- self:MoveOut(self.cur_item)
- self.cur_item = false
- self:RunMessage()
- end
- end
-
- self:CancelDelayTimer()
- self:StopMoveLeft()
- if left_time > 0 then
- self:MoveLeft(self.cur_item, - 10 - (text.sizeDelta.x - self.text_len), left_time, left_delay_time)
- end
- self.time_id = setTimeout(onDelay, self.time + left_delay_time )
- end
-
- function SysInfoNoticeView:SetHide(bool)
- self.item.gameObject:SetActive(not bool)
- end
-
- function SysInfoNoticeView:MoveIn(item)
- self:StopMoveIn()
- if item then
- local function callback()
- self:StopMoveIn()
- end
- self.move_in_item = item
- self.tween_in_id = TweenLite.to(self, self.move_in_item.transform, TweenLite.UiAnimationType.POSY, -17.5, 0.5, callback, TweenFunc.EASE_OUT)
- end
- end
-
- function SysInfoNoticeView:StopMoveIn()
- if self.tween_int_id then
- TweenLite.Stop(self.tween_int_id)
- self.tween_int_id = nil
- end
- if self.move_in_item then
- self.move_in_item = false
- end
- end
-
- function SysInfoNoticeView:MoveOut(item)
- self:StopMoveOut()
- if item then
- local function callback()
- item.gameObject:SetActive(false)
- self:StopMoveOut()
- end
- self.move_out_item = item
- self.tween_out_id = TweenLite.to(self, self.move_out_item.transform, TweenLite.UiAnimationType.POSY, 35 - 17.5, 0.5, callback, TweenFunc.EASE_OUT)
- end
- end
-
- function SysInfoNoticeView:StopMoveOut()
- if self.tween_out_id then
- TweenLite.Stop(self.tween_out_id)
- self.tween_out_id = nil
- end
- if self.move_out_item then
- self.move_out_item = false
- end
- end
-
- function SysInfoNoticeView:MoveLeft(item, pos, time, left_delay_time)
- self:StopMoveLeft()
-
- local onDelay = function ( ... )
- if item then
- local function callback()
-
- self:StopMoveLeft()
- end
- self.move_left_item = item
- self.tween_left_id = TweenLite.to(self, self.move_left_item.transform, TweenLite.UiAnimationType.POSX, pos, time, callback)
- end
- end
-
- if left_delay_time and left_delay_time > 0 then
- self.delay_move_left_time_id = setTimeout(onDelay, left_delay_time)
- else
- onDelay()
- end
- end
-
- function SysInfoNoticeView:StopMoveLeft()
- if self.tween_left_id then
- TweenLite.Stop(self.tween_left_id)
- self.tween_left_id = nil
- end
- if self.move_left_item then
- self.move_left_item = false
- end
- end
-
- function SysInfoNoticeView:StopAll()
- self:StopMoveIn()
- self:StopMoveOut()
- self:StopMoveLeft()
- end
-
- function SysInfoNoticeView:HaveCurrentItem()
- return self.cur_item
- end
-
|