|
|
- UICommonAction = UICommonAction or {}
- local cc = cc
- -- local TweenFunc = TweenFunc
-
- -- 通用UI进度条动画
- -- 参数: img 挂载了image组件的对象,必传
- -- round 当进度条有转满表现的时候,这里代表转满了几次 整数
- -- end_progress 进度条最终的进度 这里为0~1的值
- -- time 动画持续时间,不传代表立即转完
- -- duration_callback 跑进度时的回调,参数会传当前的动画进度百分数
- -- end_callback 结束回调,可不传
- -- tween_func 进度条缓动函数,可不传,默认 TweenFunc.easeOutQuint
-
- function ImageProgressAction(img, round, end_progress, time, duration_callback, end_callback, tween_func)
- assert(img ~= nil, "Image Transform can not be null!")
- local img_cpn = img:GetComponent(typeof(UnityEngine.UI.Image))
- assert(img_cpn ~= nil, "Image Transform doesn't have Image Component!")
-
- ClearImageProgressAction(img)
- -- 设置默认缓动函数
- tween_func = tween_func or TweenFunc.easeOutQuint
- -- 当前进度百分数
- local cur_percentage = img_cpn.fillAmount
- -- 动画中【进度的增量】
- local add_percentage = 0
- if round <= 0 then -- 从当前进度过渡到最终进度,没有出现转弯一圈的情况,增量就是简单的最终进度百分数减去当前进度百分数
- add_percentage = end_progress - cur_percentage
- else -- 进度转了一圈以上,需要处理增加的进度,由于要从当前进度百分数开始动画,所以要先减去当前进度百分数
- add_percentage = round - cur_percentage + end_progress
- end
- -- 进度增量不能小于0
- -- add_percentage = add_percentage <= 0 and 0 or add_percentage
- local function action_percentage_func(percent)
- local real_pec = tween_func(percent)
- -- 加上cur_percentage的原因是要从当前进度的位置开始做动画表现
- local _, final_percentage = math.modf(cur_percentage + add_percentage * real_pec);
- img_cpn.fillAmount = final_percentage
- -- 将当前的动画进度百分数传入回调
- if duration_callback then
- duration_callback(real_pec)
- end
- end
-
- if not time or time <= 0 then
- action_percentage_func(1)
- else
- local action_percentage = cc.CustomUpdate.New(time, action_percentage_func)
- if end_callback then
- action_percentage = cc.Sequence.New(action_percentage, cc.CallFunc.New(end_callback))
- end
- cc.ActionManager:getInstance():addAction(action_percentage, img)
- end
- end
-
- function ClearImageProgressAction(img)
- assert(img ~= nil, "Image Transform can not be null!")
- cc.ActionManager:getInstance():removeAllActionsFromTarget(img)
- end
-
|