源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

100 lines
3.4 KiB

--增减数量组件
NumberSliderComponent = NumberSliderComponent or BaseClass(BaseComponent)
function NumberSliderComponent:__init(parent,min_count,max_count,step,curr_count)
self:CreateGameObject(UIType.NumberSliderComponent)
self:InitData(min_count,max_count,step,curr_count)
end
function NumberSliderComponent:InitData(min_count,max_count,step,curr_count)
self.min_count = min_count or 1
self.max_count = max_count or 1
self.step = step or 1 --步长
self.slider.minValue = self.max_count == self.min_count and 0 or self.min_count --为了让最小数量等于最大数量时,滑动块在最右边
self.slider.maxValue = self.max_count
self.slider.wholeNumbers = true
self:SetCurrCount(curr_count or 1)
end
function NumberSliderComponent:LoadSuccess()
self.reduceBtn = self:GetChild("reduceBtn").gameObject
--self.imgSlider = self:GetChild("imgSlider").gameObject
--self.Handle = self:GetChild("Slider/HandleSlideArea/Handle").gameObject
self.addBtn = self:GetChild("addBtn").gameObject
self.maxBtn = self:GetChild("maxBtn").gameObject
self.slider = self:GetChild("Slider"):GetComponent("Slider")
--self.sliderObj = self:GetChild("Slider").gameObject
self.sliderText = self:GetChild("Slider/text"):GetComponent("TextMeshProUGUI")
-- self.transform:SetInsetAndSizeFromParentEdge(self.transform.EdgeRight)
self:InitEvent()
end
function NumberSliderComponent:InitEvent()
local function onBtnClickHandler(target)
if target == self.reduceBtn then
self:Reduce()
elseif target == self.addBtn then
self:Add()
elseif target == self.maxBtn then
self:Max()
-- elseif target == self.imgSlider then
-- local function call_back(num)
-- self:SetCurrCount(num)
-- end
-- GlobalEventSystem:Fire(EventName.OPEN_CALCULATOR_VIEW,self.max_count,call_back)
end
end
AddClickEvent(self.reduceBtn,onBtnClickHandler)
AddClickEvent(self.addBtn,onBtnClickHandler)
AddClickEvent(self.maxBtn,onBtnClickHandler)
--AddClickEvent(self.imgSlider,onBtnClickHandler)
--AddClickEvent(self.Handle,onBtnClickHandler)
-- 滑动条拖动时改变数值
local function onSliderDrag(target)
if target == self.slider.gameObject then
self.sliderText.text = tostring(self.slider.value)
self:SetCurrCount(self.slider.value)
end
end
AddClickEvent(self.slider.gameObject,onSliderDrag)
AddDragEvent(self.slider.gameObject,onSliderDrag)
end
function NumberSliderComponent:Reduce()
self:SetCurrCount(self.curr_count - self.step)
end
function NumberSliderComponent:Add()
self:SetCurrCount(self.curr_count + self.step)
end
function NumberSliderComponent:Max()
self:SetCurrCount(self.max_count)
end
function NumberSliderComponent:SetCurrCount(count)
self.curr_count = count
self.curr_count = math.max(self.curr_count,self.min_count)
self.curr_count = math.min(self.curr_count,self.max_count)
self.slider.value = self.curr_count
self.sliderText.text = self.curr_count
self:Fire(ComponentEvent.AddNumberComponent.CHANGE_COUNT,self.curr_count)
end
function NumberSliderComponent:GetCurrCount()
return self.curr_count
end
--传入组件大小(也就是父节点的大小,不懂用法可以看看SplitView或者ShopBuyView是怎么用的)
function NumberSliderComponent:SetComponentWidth( width )
if width then
self.transform:SetInsetAndSizeFromParentEdge(self.transform.EdgeLeft, 0, width)
else
self.transform:SetInsetAndSizeFromParentEdge(self.transform.EdgeLeft, 0, 300)
end
end
function NumberSliderComponent:SetVisibleCalcBtn( flag )
self.maxBtn:SetActive(flag)
end