源战役客户端
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 
 

163 řádky
4.1 KiB

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