CacheWidget.lua 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. local CacheWidget = class("CacheWidget", function() return ccui.Widget:create() end)
  2. function CacheWidget:ctor()
  3. self._widgetConfig = nil
  4. self._widget = nil
  5. -- 监听事件;
  6. self:registerScriptHandler(
  7. function(state)
  8. if state == "enter" then
  9. self:onEnter()
  10. elseif state == "exit" then
  11. self:onExit()
  12. end
  13. end
  14. )
  15. end
  16. function CacheWidget:InitWidgetConfig(widgetConfig)
  17. self._widgetConfig = widgetConfig
  18. -- add by sfy
  19. self:_InitWidthConfig()
  20. return true
  21. end
  22. function CacheWidget:_InitWidthConfig()
  23. if self._widgetConfig then
  24. self._widget = global.WidgetCacheManager:Create(self._widgetConfig)
  25. self._widget:setCascadeOpacityEnabled(true)
  26. if not self._widget then
  27. print("not widget config : ", self._widgetConfig)
  28. return
  29. end
  30. self:addChild(self._widget)
  31. end
  32. end
  33. function CacheWidget:_Clear()
  34. if self._widget and self._widgetConfig then
  35. -- 未使用会回收
  36. global.WidgetCacheManager:Destroy(self._widgetConfig, self._widget)
  37. self._widget:removeFromParent()
  38. self._widget = nil
  39. self._widgetConfig = nil
  40. end
  41. end
  42. function CacheWidget:onEnter()
  43. self:Enter()
  44. end
  45. function CacheWidget:onExit()
  46. self:Exit()
  47. end
  48. function CacheWidget:Enter()
  49. if self._entered then
  50. return
  51. end
  52. if not self._widget then
  53. self:_InitWidthConfig()
  54. end
  55. if self._widget then
  56. self._entered = true
  57. self:OnEnter()
  58. end
  59. end
  60. function CacheWidget:Exit()
  61. if self._widget then
  62. self:OnExit()
  63. self._entered = false
  64. self:_Clear()
  65. end
  66. end
  67. function CacheWidget:OnEnter()
  68. end
  69. function CacheWidget:OnExit()
  70. end
  71. return CacheWidget