源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 

222 行
7.6 KiB

-- <*
-- @Author: huangcong
-- @Description: 活动右侧特殊tips弹窗
-- *>
CommonActTipView = CommonActTipView or BaseClass(BaseView)
local CommonActTipView = CommonActTipView
function CommonActTipView:__init()
self.base_file = "common"
self.layout_file = "CommonActTipView"
self.layer_name = "Main"
self.destroy_imm = true
self.use_background = false --全屏界面默认使用这个参数,非全屏界面自行设置
self.anim_time = 0.5
self.is_animating = false -- 是否在动画中
self.show_time_str = false--是否显示剩余时间
self.show_time_elapse = false --剩余时间显示
self.auto_close_time = 20--关闭时间
self.item_list = {}
self.model = CommonModel:getInstance()
self.load_callback = function ()
self:LoadSuccess()
self:AddEvent()
end
self.open_callback = function ( )
self:UpdateView()
end
self.destroy_callback = function ( )
self:DestroySuccess()
end
end
--[[ view_data = { -- 界面数据
desc = "完成首次充值领极品奖励",
awardList = {},
winId = 159,
subId = 1,
}
]]
function CommonActTipView:Open(view_data)
self.view_data = view_data
print("huangcong:CommonActTipView [start:43] :", self.view_data)
PrintTable(self.view_data)
print("huangcong:CommonActTipView [end]")
BaseView.Open(self)
end
function CommonActTipView:LoadSuccess()
local nodes = {
"goBtn:obj", "timeText:tmp", "closeBtn:obj", "nameText:tmp", "iconImage:img:obj","awardScroll", "awardScroll/Viewport/awardCon",
}
self:GetChildren(nodes)
end
function CommonActTipView:AddEvent()
local function click_event(target)
if target == self.closeBtn_obj then
self:HideAnim() -- 播放关闭效果,并检查邀请缓存
elseif target == self.goBtn_obj or target == self.iconImage_obj then
if self.view_data and self.view_data.winId and self.view_data.subId then
self:HideAnim()
OpenFun.Open(self.view_data.winId,self.view_data.subId)
end
end
end
AddClickEvent(self.closeBtn_obj, click_event)
AddClickEvent(self.goBtn_obj, click_event)
local function close_event( ... )
if not self.is_loaded or self._use_delete_method then return end
self:HideAnim() -- 播放关闭效果,并检查邀请缓存
end
self:BindEvent(GlobalEventSystem, EventName.CLOSE_COMMON_ACT_TIPS, close_event)--更新界面
end
-- 更新邀请内容
function CommonActTipView:UpdateView()
self.nameText_tmp.text = self.view_data and self.view_data.desc or ""
--资源可能有多个地址,默认activityIcon
local ab_name, res_name = "activityIcon_asset", ""
local is_out_res = false
if self.view_data.winId and self.view_data.subId then
local fun_vo = OpenFun.LinkWin[self.view_data.winId.."@"..self.view_data.subId]
if fun_vo then
res_name = fun_vo.icon_res
lua_resM:setImageSprite(self, self.iconImage_img, ab_name, res_name,false)
end
end
self:UpdateItemList()
-- 动画重点坐标初始化
self.start_anim_pos_x = 378 - ClientConfig.iphone_x_offset_right
self.end_anim_pos_x = 0 - ClientConfig.iphone_x_offset_right
SetAnchoredPositionX(self.transform, self.start_anim_pos_x)
-- 自动关闭倒计时
self:StartAutoCloseTimer()
-- 播放弹出动画
self:ShowAnim()
end
-- 自动关闭倒计时
function CommonActTipView:StartAutoCloseTimer( )
local end_time = self.auto_close_time + TimeUtil:getServerTime( )
self:ClearAutoCloseTimer()
local function auto_close_func()
local left_time = end_time - TimeUtil:getServerTime( )
if left_time >= 0 then
if self.view_data.end_time then
self.timeText_tmp.text = HtmlColorTxt(TimeUtil:convertTime(self.view_data.end_time - TimeUtil:getServerTime( )), "#0ce148")
else
self.timeText_tmp.text = HtmlColorTxt(TimeUtil:convertTime(left_time), "#0ce148")
end
else
self:ClearAutoCloseTimer()
self:HideAnim() -- 播放关闭效果,并检查邀请缓存
end
end
self.auto_close_func_id = GlobalTimerQuest:AddPeriodQuest(auto_close_func, 1, -1)
end
function CommonActTipView:ClearAutoCloseTimer( )
if self.auto_close_func_id then
GlobalTimerQuest:CancelQuest(self.auto_close_func_id)
self.auto_close_func_id = nil
end
end
-- 弹出动画
function CommonActTipView:ShowAnim()
local function anim_callback()
self.is_animating = false
end
self:ClearViewAnimId()
self.is_animating = true
self.view_anim_id = TweenLite.to(self, self.transform, TweenLite.UiAnimationType.ANCHORED_POSX,
self.end_anim_pos_x, self.anim_time, anim_callback, TweenFunc.EASE_OUT_QUINT)
end
-- 播放关闭动画,并检测缓存是否还有其他邀请没有处理
function CommonActTipView:HideAnim()
local function anim_callback()
self.is_animating = false
self.waiting = true
local cache_count = self.model:GetActTipDataCacheCount()
if cache_count > 0 then
self.view_data = self.model:PopActTipDataCache()
cache_count = self.model:GetActTipDataCacheCount()
if self.view_data then
self:UpdateView()
end
else
self:Close()
end
end
self:ClearViewAnimId()
self.is_animating = true
self.view_anim_id = TweenLite.to(self, self.transform, TweenLite.UiAnimationType.ANCHORED_POSX,
self.start_anim_pos_x, self.anim_time, anim_callback, TweenFunc.EASE_OUT_QUINT)
end
function CommonActTipView:ClearViewAnimId( )
if self.view_anim_id then
TweenLite.Stop(self.view_anim_id)
self.view_anim_id = nil
end
end
function CommonActTipView:DestroySuccess( )
for i,item in pairs(self.item_list) do
UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, item)
end
self.item_list = {}
self:ClearViewAnimId()
self:ClearAutoCloseTimer()
end
function CommonActTipView:UpdateItemList( )
for k,v in pairs(self.item_list) do
v:SetVisible(false,nil,true)
end
self.col_num = 3
local item_list = self.view_data.awardList
if not item_list or TableSize(item_list) == 0 then return end
local len = #item_list
--如果比最大高度要高 那就只能滚动了
local offer_x = 1
local offer_y = -1
local space_x = 10
local space_y = 0
local item_width = 47
local x = 0
local y = 0
for i, v in ipairs(item_list) do
local item = self.item_list[i]
if item == nil then
item = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self.awardCon)
item:SetItemSize(47,47)
item:SetGoodsVo(v[4])
self.item_list[i] = item
end
local goods_Id, lock = GoodsModel:getInstance():GetMappingTypeId(v[1], v[2])
local goodVo = GoodsModel:getInstance():GetGoodsBasicByTypeId(goods_Id)
local stren_data = nil
if v[4] then
stren_data = EquipModel:getInstance():GetBagEquipAwaraItemInfo(v[4])
stren_data.equip_key = "EquipView"
end
if goodVo then
item:SetData(goods_Id, v[3], goodVo.color, stren_data, lock,true,nil)
else
-- error("没有找到物品信息 "..v.typeId)
end
item:SetVisible(true,nil,true)
x = (item_width+space_x)*(i-1) + offer_x
y = 0
item:SetPosition(x,y)
end
SetSizeDeltaX(self.awardCon,#item_list*(47+10)+10)
end