SUIHelper.lua 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. local SUIHelper = {}
  2. SUIHelper.fixImageFileName = function(filename)
  3. -- 将\转化为/
  4. -- 将后缀名改为小写
  5. if nil == filename then
  6. return ""
  7. end
  8. if "" == filename then
  9. return ""
  10. end
  11. filename = string.gsub(filename, "\\", "/")
  12. local pattern = {string.find(filename, "(.+)%.(.+)")}
  13. if not pattern[3] or not pattern[4] then
  14. return filename
  15. end
  16. -- fix
  17. filename = pattern[3] .. "." .. string.lower(pattern[4])
  18. return filename
  19. end
  20. SUIHelper.getSWidgetsMaxID = function(swidget)
  21. local maxID = 1
  22. local function calcMaxID(branches)
  23. for _, v in pairs(branches) do
  24. if v.element.attr.id and tonumber(v.element.attr.id) then
  25. maxID = math.max(tonumber(v.element.attr.id), maxID)
  26. end
  27. if v.branches then
  28. calcMaxID(v.branches)
  29. end
  30. end
  31. end
  32. calcMaxID(swidget.branches)
  33. return maxID
  34. end
  35. SUIHelper.getResFile = function(renderer)
  36. if not renderer then
  37. return "", 0
  38. end
  39. local sprite = renderer:getSprite()
  40. if not sprite then
  41. return "", 0
  42. end
  43. return sprite:getResourceName(), sprite:getResourceType()
  44. end
  45. SUIHelper.cleanuprender = function(render)
  46. local classname = tolua.type(render)
  47. local eventDispatcher = cc.Director:getInstance():getEventDispatcher()
  48. if classname == "ccui.Layout" then
  49. RemoveAllWidgetClickEventListener(render)
  50. eventDispatcher:removeEventListenersForTarget(render)
  51. elseif classname == "ccui.Text" then
  52. RemoveAllWidgetClickEventListener(render)
  53. eventDispatcher:removeEventListenersForTarget(render)
  54. elseif classname == "ccui.ImageView" then
  55. RemoveAllWidgetClickEventListener(render)
  56. eventDispatcher:removeEventListenersForTarget(render)
  57. elseif classname == "ccui.Button" then
  58. RemoveAllWidgetClickEventListener(render)
  59. eventDispatcher:removeEventListenersForTarget(render)
  60. render:setBrightStyle(0)
  61. end
  62. render:setVisible(true)
  63. render:stopAllActions()
  64. render:setRotation(0)
  65. render:setScale(1)
  66. render:setFlippedX(false)
  67. render:setFlippedY(false)
  68. if render.disableEffect then
  69. render:disableEffect()
  70. end
  71. if classname == "ccui.ImageView" or classname == "ccui.Button" then
  72. Shader_Normal(render)
  73. elseif classname == "ccui.Text" then
  74. local labelRenderer = render:getVirtualRenderer()
  75. if labelRenderer.underline and (not tolua.isnull(labelRenderer.underline)) then
  76. labelRenderer.underline:removeFromParent()
  77. labelRenderer.underline = nil
  78. end
  79. labelRenderer:setMaxLineWidth(0)
  80. elseif classname == "ccui.Layout" then
  81. render:setClippingEnabled(false)
  82. end
  83. end
  84. return SUIHelper