|
|
- 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
|