107 lines
2.9 KiB
Lua
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 |