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.

128 lines
4.2 KiB

  1. cc.CheckBox.ClassName = "CheckBox"
  2. function cc.CheckBox:saveToXmlNode(xmlNode)
  3. cc.Widget.saveToXmlNode(self , xmlNode);
  4. xmlNode.BackGround = getUITexture(self:getBackGroundFileName() , self:getBackGroundTexType());
  5. xmlNode.BackGroundSelected = getUITexture(self:getBackGroundSelectedFileName() , self:getBackGroundSelectedTexType());
  6. xmlNode.FrontCross = getUITexture(self:getFrontCrossFileName() , self:getFrontCrossTexType());
  7. xmlNode.BackGroundDisabled = getUITexture(self:getBackGroundDisabledFileName() , self:getBackGroundDisabledTexType());
  8. xmlNode.FrontCrossDisabled = getUITexture(self:getFrontCrossDisabledFileName() , self:getFrontCrossDisabledTexType());
  9. end
  10. function cc.CheckBox:loadFromXmlNode(xmlNode)
  11. cc.Widget.loadFromXmlNode(self , xmlNode);
  12. -- 底图资源
  13. setUITexture(self.loadTextureBackGround , self , xmlNode.BackGround);
  14. -- 按下底图
  15. setUITexture(self.loadTextureBackGroundSelected , self , xmlNode.BackGroundSelected);
  16. -- 禁用底图
  17. setUITexture(self.loadTextureBackGroundDisabled , self , xmlNode.BackGroundDisabled);
  18. -- 标识图选中
  19. setUITexture(self.loadTextureFrontCross , self , xmlNode.FrontCross);
  20. -- 标识图未选中
  21. setUITexture(self.loadTextureFrontCrossDisabled , self , xmlNode.FrontCrossDisabled);
  22. end
  23. function cc.CheckBox:extend(node)
  24. cc.Widget:extend(node);
  25. node:setName("CheckBox")
  26. end
  27. function cc.CheckBox:createNode()
  28. local layer = cc.CheckBox:create();
  29. cc.CheckBox:extend(layer);
  30. return layer;
  31. end
  32. -- 设置默认值
  33. function cc.CheckBox:setDefaults()
  34. self:loadTextureBackGround("res/default/selected01.png");
  35. self:loadTextureFrontCross("res/default/selected02.png");
  36. self:setSelectedState(true);
  37. -- 默认需要响应touch事件
  38. self:setTouchEnabled(true)
  39. end
  40. local function resetSprite(sprite)
  41. sprite:setTexture(nil);
  42. sprite:setTextureRect(cc.rect(0,0,0,0));
  43. end
  44. -- 重新加载这个控件的所有图片
  45. function cc.CheckBox:postloadImage()
  46. resetSprite(self:getBackGroundRenderer());
  47. self:loadTextureBackGround(self:getBackGroundFileName());
  48. resetSprite(self:getBackGroundSelectedRenderer());
  49. self:loadTextureBackGroundSelected(self:getBackGroundSelectedFileName());
  50. resetSprite(self:getBackGroundDisabledRenderer());
  51. self:loadTextureBackGroundDisabled(self:getBackGroundDisabledFileName());
  52. resetSprite(self:getFrontCrossRenderer());
  53. self:loadTextureFrontCross(self:getFrontCrossFileName());
  54. resetSprite(self:getFrontCrossDisabledRenderer());
  55. self:loadTextureFrontCrossDisabled(self:getFrontCrossDisabledFileName());
  56. end
  57. -- 收集这个控件用到了哪些PList文件
  58. function cc.CheckBox:collectPListFiles()
  59. local files = {};
  60. collectPListFile(files , self:getBackGroundFileName() , self:getBackGroundTexType());
  61. collectPListFile(files , self:getBackGroundSelectedFileName() , self:getBackGroundSelectedTexType());
  62. collectPListFile(files , self:getFrontCrossFileName() , self:getFrontCrossTexType());
  63. collectPListFile(files , self:getBackGroundDisabledFileName() , self:getBackGroundDisabledTexType());
  64. collectPListFile(files , self:getFrontCrossDisabledFileName() , self:getFrontCrossDisabledTexType());
  65. function getParent(node, path)
  66. local parent = node:getParent()
  67. if parent then
  68. local nameParent = parent:getName()
  69. path = nameParent.. "\\"..path
  70. return getParent(parent, path)
  71. else
  72. return path
  73. end
  74. end
  75. local nodePath = getParent(self, self:getName());
  76. for k,v in pairs(files) do
  77. print("plist = " .. v .. ", nodePath = ".. nodePath)
  78. end
  79. return files;
  80. end
  81. -- 设置选中时要显示的节点
  82. function cc.CheckBox:setSelectedNode(nodeSelected, nodeUnSelected)
  83. self.nodeSelected = nodeSelected
  84. self.nodeUnSelected = nodeUnSelected
  85. end
  86. function cc.CheckBox:updateSelectedNode()
  87. local isSelected = self:getSelectedState()
  88. if self.nodeSelected then
  89. self.nodeSelected:setVisible(isSelected)
  90. end
  91. if self.nodeUnSelected then
  92. self.nodeUnSelected:setVisible( not isSelected)
  93. end
  94. end
  95. -- 重写手动设置选中状态的接口:选中或取消选中之后更新选中图片
  96. local old_setSelectedState = cc.CheckBox.setSelectedState;
  97. function cc.CheckBox:setSelectedState(isSelected, skipUpdateNode)
  98. old_setSelectedState(self, isSelected);
  99. if not skipUpdateNode then
  100. self:updateSelectedNode();
  101. end
  102. end