|
|
- FuliNoticeView = FuliNoticeView or BaseClass(BaseItem)
- local FuliNoticeView = FuliNoticeView
-
- function FuliNoticeView:__init()
- self.base_file = "Fuli"
- self.layout_file = "FuliNoticeView"
- self.model = LoginModel:getInstance()
- self.index = index or 1
- self.tab_list = {}
- self.cont_height = 564 + 15
- self:Load()
- end
-
- function FuliNoticeView:Load_callback()
- self.nodes = {
- "scrollNotice/Viewport/Content/bg2:raw", "arrow_image", "scrollNotice/Viewport/Content/bg2/jump_btn:obj",
- }
- self:GetChildren(self.nodes)
-
- self.scrollTab = self:GetChild("scrollTab/Viewport/Content")
- self.scrollNotice = self:GetChild("scrollNotice/Viewport/Content")
- self.scroll_rect = self:GetChild("scrollNotice"):GetComponent("ScrollRect")
- self.scroll_obj = self:GetChild("scrollNotice").gameObject
- self.arrow_image_canvas = self.arrow_image:GetComponent("CanvasGroup")
- self.contentTxt = self:GetChild("scrollNotice/Viewport/Content/contentTxt"):GetComponent("TextMeshProUGUI")
- self:AddEvents()
-
-
- self.bg2.transform.pivot = Vector2(0,1)
- self.bg2.transform.anchorMin = Vector2(0, 1)
- self.bg2.transform.anchorMax = Vector2(0, 1)
- SetAnchoredPosition(self.bg2,0,0)
-
- if self.need_refreshData then
- self:UpdateView()
- end
- end
-
- function FuliNoticeView:AddEvents( )
- local on_scroll_end = function ( )
- self:StopAllAnim()
- self:RemoveDelayHideId()
- self.arrow_image_canvas.alpha = 0
- end
- BindScrollViewEndEvent(self.scroll_obj, self.scroll_rect, on_scroll_end)
- local function on_click( ... )
- if self.data then
- local jump_id = stringtotable(self.data.jump_id)
- if TableSize(jump_id) > 0 then
- OpenFun.Open(jump_id[1][1],jump_id[1][2])
- end
- end
- end
- AddClickEvent(self.jump_btn_obj, on_click)
- end
-
- function FuliNoticeView:UpdateView( )
- local data = self.model:GetNoticeData("fuli_view")
- if TableSize(data) == 0 then
- return
- end
- local sort_func = function ( a, b )
- return a.sequence < b.sequence
- end
- table.sort(data, sort_func)
- local callback = function (index)
- self.index = index
- for _, v in pairs(self.tab_list) do
- v:SetSelectState(v.index == index)
- end
- self:SwitchView(data, index)
- end
-
- local tab = nil
- for i, v in ipairs(data) do
- tab = self.tab_list[i]
- if tab == nil then
- tab = FuliNoticeTab.New(self.scrollTab)
- self.tab_list[i] = tab
- end
- tab:SetPosition(7, -61 * (i - 1)-8)
- tab:SetCallBack(callback)
- tab:SetData(v, i)
- end
- self.scrollTab.sizeDelta = Vector2(245, #data * 80)
- callback(self.index)
- end
-
- function FuliNoticeView:SwitchView(content_list, index)
- local banner = content_list[index].picture == "[]" and 1 or content_list[index].picture
- local content = content_list[index].content or ""
- lua_resM:setOutsideRawImage(self,self.bg2_raw,GameResPath.GetViewBigBg("notice_banner"..banner),true)
- self.contentTxt.text = content
- self.size = self.contentTxt.preferredHeight + 60 + 145--145是banner高
- self.scrollNotice.sizeDelta = Vector2(688, self.size)
- if self.size < self.cont_height then
- self.scroll_rect.enabled = false
- self:StopAllAnim()
- self:RemoveDelayHideId()
- self.arrow_image_canvas.alpha = 0
- else
- self.scroll_rect.enabled = true
- end
- SetAnchoredPositionY(self.scrollNotice, 0)
- self:SetTimer()
- --设置跳转按钮开不开
- local data = content_list[index]
- self.data = data
- self.jump_btn_obj:SetActive(false)
- if data then
- local jump_id = stringtotable(data.jump_id)
- local day_can_jump = false
- local lv_can_jump = false
- if TableSize(jump_id) > 0 then--有跳转
- local openDay = stringtotable(data.open_day)
- if TableSize(openDay) > 0 then--有配开服天数
- local server_open_time = ServerTimeModel:getInstance():GetOpenServerTime()
- local open_day = 0
- if server_open_time > 0 then
- local open_time = os.time() - server_open_time
- open_day = open_time / 3600 / 24
- -- return math.ceil(day)--当时间刚好是3600*24*n的时候 就会比服务端少算一天的时间 客户端只有经过24小时+1秒才会递进1天
- open_day = math.floor(open_day+1)
- if openDay[1][1] <= open_day and openDay[1][2] >= open_day then
- day_can_jump = true
- end
- end
- else
- day_can_jump = true
- end
- local jump_lv = stringtotable(data.jump_lv)
- if TableSize(jump_lv) > 0 then--有限制等级跳转
- local level = RoleManager.Instance.mainRoleInfo.level
- if jump_lv[1][1] <= level and jump_lv[1][2] >= level then
- lv_can_jump = true
- end
- else
- lv_can_jump = true
- end
- self.jump_btn_obj:SetActive(day_can_jump and lv_can_jump)
- end
- end
- end
-
- function FuliNoticeView:SetData( data )
- self.data = data
- if self.is_loaded then
- self.need_refreshData = false
- self:UpdateView()
- else
- self.need_refreshData = true
- end
- end
-
- function FuliNoticeView:SetTimer( )
- self:StopTimer()
- local time = 3
- local function onBoxTimer()
- time = time - 1
- if time > 0 then
-
- else
- local x, y_offset = GetAnchoredPosition(self.scrollNotice, 0)
- if self.size <= self.cont_height or y_offset ~= 0 then--后面没东西了或者玩家动过
- else
- self:FlashHideCall()
- self:StopAllAnim()
- end
- self:StopTimer()
- end
- end
- self.arrow_timer_id = GlobalTimerQuest:AddPeriodQuest(onBoxTimer, 1, -1)
- end
-
- function FuliNoticeView:FlashShowCall( )
- if self._use_delete_method then
- return
- end
- local function callback( )
- self:FlashHideCall()
- end
- self.arrow_img_anim_id = TweenLite.to(self, self.arrow_image_canvas, TweenLite.UiAnimationType.ALPHA, 1, 0.5, callback)
- end
-
- function FuliNoticeView:FlashHideCall( )
- if self._use_delete_method then
- return
- end
- local function callback( )
- self:FlashShowCall()
- end
- if not self.delay_hide_id then
- local function delay( )
- self:RemoveDelayHideId()
- self.arrow_img_anim_id = TweenLite.to(self, self.arrow_image_canvas, TweenLite.UiAnimationType.ALPHA, 0.3, 0.5, callback)
- end
- self.delay_hide_id = setTimeout(delay,0.2)
- end
- end
-
- function FuliNoticeView:RemoveDelayHideId( )
- if self.delay_hide_id then
- GlobalTimerQuest:CancelQuest(self.delay_hide_id)
- self.delay_hide_id = nil
- end
- end
-
- function FuliNoticeView:StopAllAnim( )
- if self.arrow_img_anim_id then
- TweenLite.Stop(self.arrow_img_anim_id)
- self.arrow_img_anim_id = nil
- end
- end
-
- function FuliNoticeView:StopTimer( )
- if self.arrow_timer_id then
- GlobalTimerQuest:CancelQuest(self.arrow_timer_id)
- self.arrow_timer_id = nil
- end
- end
-
- function FuliNoticeView:__delete( )
- for k, v in pairs(self.tab_list) do
- v:DeleteMe()
- v = nil
- end
- self.item_list = {}
- self.scroll_rect.onValueChanged:RemoveAllListeners()
- self:StopAllAnim()
- self:RemoveDelayHideId()
- self:StopTimer()
- end
|