源战役客户端
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.

99 lines
3.4 KiB

  1. --增减数量组件
  2. NumberSliderComponent = NumberSliderComponent or BaseClass(BaseComponent)
  3. function NumberSliderComponent:__init(parent,min_count,max_count,step,curr_count)
  4. self:CreateGameObject(UIType.NumberSliderComponent)
  5. self:InitData(min_count,max_count,step,curr_count)
  6. end
  7. function NumberSliderComponent:InitData(min_count,max_count,step,curr_count)
  8. self.min_count = min_count or 1
  9. self.max_count = max_count or 1
  10. self.step = step or 1 --步长
  11. self.slider.minValue = self.max_count == self.min_count and 0 or self.min_count --为了让最小数量等于最大数量时,滑动块在最右边
  12. self.slider.maxValue = self.max_count
  13. self.slider.wholeNumbers = true
  14. self:SetCurrCount(curr_count or 1)
  15. end
  16. function NumberSliderComponent:LoadSuccess()
  17. self.reduceBtn = self:GetChild("reduceBtn").gameObject
  18. --self.imgSlider = self:GetChild("imgSlider").gameObject
  19. --self.Handle = self:GetChild("Slider/HandleSlideArea/Handle").gameObject
  20. self.addBtn = self:GetChild("addBtn").gameObject
  21. self.maxBtn = self:GetChild("maxBtn").gameObject
  22. self.slider = self:GetChild("Slider"):GetComponent("Slider")
  23. --self.sliderObj = self:GetChild("Slider").gameObject
  24. self.sliderText = self:GetChild("Slider/text"):GetComponent("TextMeshProUGUI")
  25. -- self.transform:SetInsetAndSizeFromParentEdge(self.transform.EdgeRight)
  26. self:InitEvent()
  27. end
  28. function NumberSliderComponent:InitEvent()
  29. local function onBtnClickHandler(target)
  30. if target == self.reduceBtn then
  31. self:Reduce()
  32. elseif target == self.addBtn then
  33. self:Add()
  34. elseif target == self.maxBtn then
  35. self:Max()
  36. -- elseif target == self.imgSlider then
  37. -- local function call_back(num)
  38. -- self:SetCurrCount(num)
  39. -- end
  40. -- GlobalEventSystem:Fire(EventName.OPEN_CALCULATOR_VIEW,self.max_count,call_back)
  41. end
  42. end
  43. AddClickEvent(self.reduceBtn,onBtnClickHandler)
  44. AddClickEvent(self.addBtn,onBtnClickHandler)
  45. AddClickEvent(self.maxBtn,onBtnClickHandler)
  46. --AddClickEvent(self.imgSlider,onBtnClickHandler)
  47. --AddClickEvent(self.Handle,onBtnClickHandler)
  48. -- 滑动条拖动时改变数值
  49. local function onSliderDrag(target)
  50. if target == self.slider.gameObject then
  51. self.sliderText.text = tostring(self.slider.value)
  52. self:SetCurrCount(self.slider.value)
  53. end
  54. end
  55. AddClickEvent(self.slider.gameObject,onSliderDrag)
  56. AddDragEvent(self.slider.gameObject,onSliderDrag)
  57. end
  58. function NumberSliderComponent:Reduce()
  59. self:SetCurrCount(self.curr_count - self.step)
  60. end
  61. function NumberSliderComponent:Add()
  62. self:SetCurrCount(self.curr_count + self.step)
  63. end
  64. function NumberSliderComponent:Max()
  65. self:SetCurrCount(self.max_count)
  66. end
  67. function NumberSliderComponent:SetCurrCount(count)
  68. self.curr_count = count
  69. self.curr_count = math.max(self.curr_count,self.min_count)
  70. self.curr_count = math.min(self.curr_count,self.max_count)
  71. self.slider.value = self.curr_count
  72. self.sliderText.text = self.curr_count
  73. self:Fire(ComponentEvent.AddNumberComponent.CHANGE_COUNT,self.curr_count)
  74. end
  75. function NumberSliderComponent:GetCurrCount()
  76. return self.curr_count
  77. end
  78. --传入组件大小(也就是父节点的大小,不懂用法可以看看SplitView或者ShopBuyView是怎么用的)
  79. function NumberSliderComponent:SetComponentWidth( width )
  80. if width then
  81. self.transform:SetInsetAndSizeFromParentEdge(self.transform.EdgeLeft, 0, width)
  82. else
  83. self.transform:SetInsetAndSizeFromParentEdge(self.transform.EdgeLeft, 0, 300)
  84. end
  85. end
  86. function NumberSliderComponent:SetVisibleCalcBtn( flag )
  87. self.maxBtn:SetActive(flag)
  88. end