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