|
--增减数量组件
|
|
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
|