Files
2025-01-25 04:38:09 +08:00

107 lines
2.9 KiB
Lua

------------------------------------------------
--作者: 王圣
--日期: 2020-12-29
--文件: DynamicProcess.lua
--模块: DynamicProcess
--描述: 动态进度条组件
------------------------------------------------
local DynamicProcess = {
Trans = nil, -- Transform
Bg = nil,
Spr = nil,
HeadValue = 0,
Space = 0,
BgAndSprDis = 0,
SpaceCount = 0,
Derection = DynamicProcessDir.Width,
DataList = List:New()
}
--headValue : 进度条头部长(宽) 有些进度条头部并不是等比划分
--space : 进度条等比间隔
--bgAndSprDis Bg和Spr之间的间隔
function DynamicProcess:New(trans, headValue, space, bgAndSprDis, derection)
local _m = Utils.DeepCopy(self)
_m.Trans = trans
_m.HeadValue = headValue
_m.Space = space
_m.BgAndSprDis = bgAndSprDis
_m.Derection = derection
if headValue == 0 or headValue == nil then
self.HeadValue = space
end
_m:FindAllComponents()
return _m
end
--查找组件
function DynamicProcess:FindAllComponents()
local _myTrans = self.Trans
self.Bg = UIUtils.FindSpr(_myTrans,"Bg")
self.Spr = UIUtils.FindSpr(_myTrans, "Spr")
end
function DynamicProcess:Init(spaceCount)
--设置Bg 和 Spr 的长(宽)
end
function DynamicProcess:GetSprWidthOrHeight()
local _value = self.HeadValue + (self.SpaceCount - 1) * self.Space + self.BgAndSprDis
_value = _value - 2 * self.BgAndSprDis
return _value
end
function DynamicProcess:GetBgWidthOrHeight()
local _value = self.HeadValue + (self.SpaceCount - 1) * self.Space + self.BgAndSprDis
return _value
end
--刷新进度
function DynamicProcess:Refreash(point, dataList, spaceCount)
if #self.DataList then
if dataList ~= nil then
for i = 1, #dataList do
self.DataList:Add(dataList[i])
end
end
end
if self.SpaceCount == 0 then
self.SpaceCount = spaceCount
if self.Derection == DynamicProcessDir.Width then
self.Bg.width = self:GetBgWidthOrHeight()
self.Spr.width = self:GetSprWidthOrHeight()
else
self.Bg.height = self:GetBgWidthOrHeight()
self.Spr.height = self:GetSprWidthOrHeight()
end
end
local _isFind = false
local _curData = nil
for i = 1, #self.DataList do
local _data = self.DataList[i]
if _data ~= nil then
if _data.Point >= point and not _isFind then
_curData = _data
_isFind = true
break
end
end
end
if not _isFind then
--进度已经满了
self.Spr.fillAmount = 1
else
local _value1 = point / _curData.Point
local _value2 = (self.HeadValue + self.Space * (_curData.Index - 1) - self.BgAndSprDis) / self:GetSprWidthOrHeight()
self.Spr.fillAmount = _value1 * _value2
end
end
return DynamicProcess