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