EmpowerDoubleItem = EmpowerDoubleItem or BaseClass(BaseItem)
|
|
local EmpowerDoubleItem = EmpowerDoubleItem
|
|
|
|
local co_MoveXYTable = co.MoveXYTable
|
|
|
|
function EmpowerDoubleItem:__init()
|
|
self.base_file = "empower"
|
|
self.layout_file = "EmpowerDoubleItem"
|
|
self.model = EmpowerModel:GetInstance()
|
|
|
|
self:Load()
|
|
end
|
|
|
|
function EmpowerDoubleItem:Load_callback()
|
|
self.nodes = {
|
|
"double_font:obj",
|
|
}
|
|
self:GetChildren(self.nodes)
|
|
self.item_canvas = self.double_font:GetComponent("CanvasGroup")
|
|
|
|
self:AddEvents()
|
|
self:UpdateBaseView( )
|
|
if self.need_refreshData then
|
|
self:UpdateView()
|
|
end
|
|
end
|
|
|
|
function EmpowerDoubleItem:AddEvents( )
|
|
|
|
end
|
|
|
|
function EmpowerDoubleItem:UpdateBaseView( )
|
|
|
|
end
|
|
|
|
function EmpowerDoubleItem:UpdateView( )
|
|
self:StartAnim( )
|
|
end
|
|
|
|
-- item是否可以复用
|
|
function EmpowerDoubleItem:CanUse( )
|
|
return not self.is_in_anim
|
|
end
|
|
|
|
function EmpowerDoubleItem:SetData( data )
|
|
self.is_in_anim = true
|
|
self.data = data
|
|
if self.is_loaded then
|
|
self.need_refreshData = false
|
|
self:UpdateView()
|
|
else
|
|
self.need_refreshData = true
|
|
end
|
|
end
|
|
|
|
function EmpowerDoubleItem:StartUpdateBeat( )
|
|
Runner.Instance:AddRunObj(self, 1)
|
|
end
|
|
|
|
function EmpowerDoubleItem:RemoveUpdateBeat( )
|
|
Runner.Instance:RemoveRunObj(self)
|
|
end
|
|
|
|
-- 动画入口
|
|
function EmpowerDoubleItem:StartAnim( )
|
|
self.last_update_time = Status.NowTime
|
|
local temp_cfg = EmpowerConst.UpAnimCfg
|
|
self.anim_info = {
|
|
-- cache_type = temp_cfg.cache_type,
|
|
-- font_id = font_id,
|
|
start_time = Time.time,
|
|
-- id = self.damage_info_id,
|
|
alpha = 1,
|
|
stage = 1,
|
|
-- anim_type = temp_cfg.anim_type,
|
|
start_scale = temp_cfg.start_scale, --开始比例
|
|
speed1 = temp_cfg.speed1, --起始速度
|
|
time1 = temp_cfg.time1, --向上弹起阶段的时间
|
|
time2 = temp_cfg.time2, --中间停留时间
|
|
time3 = temp_cfg.time3, --向下落并渐隐的时间
|
|
speed3 = temp_cfg.speed3, --消失阶段的速度
|
|
speed = temp_cfg.speed1,
|
|
-- direction = co_TableXY(0, 1),
|
|
}
|
|
|
|
-- 初始化各项参数
|
|
self.item_canvas.alpha = 1
|
|
SetLocalPosition(self.double_font,0, temp_cfg.start_pos_y, 0)
|
|
SetLocalScale(self.double_font, temp_cfg.start_scale, temp_cfg.start_scale, temp_cfg.start_scale)
|
|
self.double_font_obj:SetActive(true)
|
|
|
|
self:StartUpdateBeat( )
|
|
end
|
|
|
|
-- 2为向上弹起的动画:1弹起来从大变小移动 2停留 3向上渐隐
|
|
function EmpowerDoubleItem:Update(now_time, elapsed_time)
|
|
if now_time - self.last_update_time < 0.03 then
|
|
return
|
|
end
|
|
self.last_update_time = now_time
|
|
local info = self.anim_info
|
|
if info.start_time <= now_time then
|
|
--第一阶段,弹起来
|
|
local t = now_time - info.start_time
|
|
if info.stage == 1 then
|
|
local p = 1
|
|
local font_scale = 1
|
|
if t >= info.time1 then
|
|
info.stage = 2
|
|
info.speed = 0
|
|
info.start_time = now_time
|
|
else
|
|
p = t / info.time1
|
|
if p > 1 then
|
|
p = 1
|
|
end
|
|
info.speed = info.speed1 * p
|
|
font_scale = info.start_scale - (info.start_scale-1) * p
|
|
if font_scale < 1 then
|
|
font_scale = 1
|
|
end
|
|
end
|
|
SetLocalScale(self.double_font, font_scale, font_scale, font_scale)
|
|
-- self.worldFontMgr:SetArtFontScale(info.font_id, font_scale)
|
|
local dist = elapsed_time * info.speed
|
|
SetLocalPositionY(self.double_font, GetLocalPositionY( self.double_font ) + dist)
|
|
-- co_MoveXYTable(info.pos, info.direction, dist)
|
|
--第二阶段,停留
|
|
elseif info.stage == 2 then
|
|
if t > info.time2 then
|
|
info.stage = 3
|
|
info.start_time = now_time
|
|
end
|
|
--向上升并渐隐
|
|
elseif info.stage == 3 then
|
|
if t >= info.time3 then
|
|
info.dead = true
|
|
else
|
|
local p = t / info.time3
|
|
if p >= 1 then
|
|
p = 1
|
|
end
|
|
info.speed = info.speed3
|
|
info.alpha = 1 - (p * p * 1)
|
|
self.item_canvas.alpha = info.alpha
|
|
|
|
local dist = elapsed_time * info.speed
|
|
SetLocalPositionY(self.double_font, GetLocalPositionY( self.double_font ) + dist)
|
|
-- co_MoveXYTable(info.pos, info.direction, dist)
|
|
end
|
|
end
|
|
-- 动画结束
|
|
if info.dead then
|
|
self:RemoveUpdateBeat()
|
|
self.double_font_obj:SetActive(false)
|
|
self.is_in_anim = false
|
|
end
|
|
end
|
|
end
|
|
|
|
function EmpowerDoubleItem:__delete( )
|
|
self:RemoveUpdateBeat()
|
|
end
|