源战役客户端
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

114 lignes
3.3 KiB

il y a 4 semaines
  1. Combox = Combox or BaseClass(BaseComponent)
  2. local Combox = Combox
  3. function Combox:__init(parent,data,callback,width,height,red_data,prefab_data,layer_name)
  4. self.data = data or {}
  5. self.prefab_data = prefab_data or {Combox = "Combox",ComboxView = "ComboxView", ComboxItem = "ComboxItem", ComboxView_Offer_Y = 100, index = 1}
  6. self.callback = callback
  7. self.width = width or 142
  8. self.height = height or 32
  9. self.index = self.prefab_data.index or 1
  10. self.layer_name = "Top"--layer_name
  11. if self.prefab_data and self.prefab_data.Combox == "Combox" then--不同的类型在这里加判断即可
  12. self:CreateGameObject(UIType.Combox)
  13. else
  14. self:CreateGameObject(UIType.Combox)
  15. end
  16. self.red_data = red_data or {}
  17. end
  18. function Combox:LoadSuccess()
  19. local nodes = {
  20. "img_bg/img_up:obj","img_bg","img_bg/img_down:obj","img_bg/img_red:obj","show_text:tmp",
  21. }
  22. self:GetChildren(nodes)
  23. self.is_loaded = true
  24. self.img_bg.sizeDelta = Vector2(self.width,self.height)
  25. self.transform.sizeDelta = Vector2(self.width,self.height)
  26. self.show_text_tmp.text = self.data[self.index] or ""
  27. -- self:SetSelectIndex(self.index)
  28. self:RefreshRedData()
  29. self:AddEvent()
  30. end
  31. function Combox:AddEvent()
  32. local function callback(index)
  33. self:SetSelectIndex(index)
  34. end
  35. local function close_callback()
  36. if self._use_delete_method then
  37. return
  38. end
  39. self.img_up_obj:SetActive(false)
  40. self.img_down_obj:SetActive(true)
  41. self.comboxView = nil --已经销毁了,直接释放引用
  42. end
  43. local function onClick()
  44. self.img_up_obj:SetActive(true)
  45. self.img_down_obj:SetActive(false)
  46. if not self.comboxView then
  47. self.comboxView = ComboxView.New(nil,self.prefab_data,self.layer_name)
  48. end
  49. self.comboxView:SetSize(self.width,self.height)
  50. self.comboxView:Open(self.data,callback,close_callback,self.transform.position,self.red_data,self.source_type)
  51. end
  52. AddClickEvent(self.gameObject,onClick)
  53. end
  54. function Combox:SetSelectIndex(index,tag)
  55. self.index = index or self.index
  56. if self.is_loaded then
  57. self.show_text_tmp.text = self.data[index] or ""
  58. end
  59. if self.callback and not self.just_set_select then
  60. self.callback(self.index,tag)
  61. end
  62. self.just_set_select = false
  63. end
  64. function Combox:SetData(data)
  65. end
  66. --just_set_select 表示只选中item,不执行回调
  67. function Combox:ResetData(data,index,callback,width,height,red_data,just_set_select, prefab_data)
  68. self.data = data or {}
  69. self.index = index or 1
  70. self.callback = callback or self.callback
  71. self.just_set_select = just_set_select
  72. self.prefab_data = prefab_data
  73. self.red_data = red_data or {}
  74. self:SetSelectIndex(self.index)
  75. self:RefreshRedData()
  76. if width or height then
  77. self.width = width or self.width or 142
  78. self.height = height or self.height or 32
  79. self:SetSize()
  80. end
  81. end
  82. function Combox:RefreshRedData( red_data )
  83. self.red_data = red_data or {}
  84. if self.is_loaded and self.img_red_obj and self.img_red_obj then
  85. local result = false
  86. for k,v in pairs(self.red_data) do
  87. if v == true then
  88. result = true
  89. break
  90. end
  91. end
  92. self.img_red_obj:SetActive(result)
  93. end
  94. end
  95. function Combox:SetSize( )
  96. self.img_bg.sizeDelta = Vector2(self.width,self.height)
  97. self.transform.sizeDelta = Vector2(self.width,self.height)
  98. end
  99. function Combox:__delete()
  100. if self.comboxView then
  101. self.comboxView:Close()
  102. self.comboxView = nil
  103. end
  104. end