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.

144 lines
3.8 KiB

  1. cc.Text.ClassName = "Text"
  2. function cc.Text:saveToXmlNode(xmlNode)
  3. cc.Widget.saveToXmlNode(self , xmlNode);
  4. xmlNode.TouchScaleChangeEnabled = self:isTouchScaleChangeEnabled();
  5. xmlNode.Text = self:getText();
  6. xmlNode.FontConfig = self:getFontConfig();
  7. xmlNode.AreaSize = self:getTextAreaSize();
  8. xmlNode.TextHorizontalAlignment = self:getTextHorizontalAlignment();
  9. xmlNode.TextVerticalAlignment = self:getTextVerticalAlignment();
  10. xmlNode.CharPadding = self:getCharPadding();
  11. xmlNode.LinePadding = self:getLinePadding();
  12. end
  13. function cc.Text:loadFromXmlNode(xmlNode)
  14. cc.Widget.loadFromXmlNode(self , xmlNode);
  15. self:setTouchScaleChangeEnabled(xmlNode.TouchScaleChangeEnabled);
  16. if xmlNode.AreaSize then
  17. self:setTextAreaSize(xmlNode.AreaSize);
  18. end
  19. local fontConfig = xmlNode.FontConfig
  20. if not fontConfig then
  21. fontConfig = {}
  22. fontConfig.fontFilePath = "res/default/msyh.ttc"
  23. fontConfig.fontSize = xmlNode.FontSize
  24. fontConfig.glyphs = cc.GLYPHCOLLECTION_DYNAMIC
  25. fontConfig.customGlyphs = nil
  26. fontConfig.distanceFieldEnabled = false
  27. fontConfig.outlineSize = 0
  28. end
  29. self:setFontConfig(fontConfig);
  30. self:setTextHorizontalAlignment(xmlNode.TextHorizontalAlignment);
  31. self:setTextVerticalAlignment(xmlNode.TextVerticalAlignment);
  32. if xmlNode.CharPadding then
  33. self:setCharPadding(xmlNode.CharPadding);
  34. self:setLinePadding(xmlNode.LinePadding);
  35. end
  36. self:setText(xmlNode.Text);
  37. end
  38. -- 收集ui的文本,返回文本table
  39. function cc.Text:collectText()
  40. return {TextTranslator:collect(self:getString())};
  41. end
  42. -- 翻译xmlNode里的文本,dict是字典表
  43. function cc.Text:applyDict(dict)
  44. local translated = dict[TextTranslator:collect(self:getString())];
  45. if translated then
  46. self:setString(TextTranslator:translate(self:getString() , translated));
  47. end
  48. end
  49. function cc.Text:setFontConfig(ttfConfig)
  50. local label = self:getVirtualRenderer();
  51. label:setFontConfig(ttfConfig)
  52. end
  53. function cc.Text:getFontConfig()
  54. local label = self:getVirtualRenderer();
  55. local config = label:getFontConfig()
  56. return config;
  57. end
  58. function cc.Text:setCharPadding(padding)
  59. local label = self:getVirtualRenderer();
  60. label:setCharPadding(padding)
  61. end
  62. function cc.Text:getCharPadding()
  63. local label = self:getVirtualRenderer();
  64. return label:getCharPadding()
  65. end
  66. function cc.Text:setLinePadding(padding)
  67. local label = self:getVirtualRenderer();
  68. label:setLinePadding(padding)
  69. end
  70. function cc.Text:getLinePadding()
  71. local label = self:getVirtualRenderer();
  72. return label:getLinePadding()
  73. end
  74. function cc.Text:setPadding(x , y)
  75. local label = self:getVirtualRenderer();
  76. label:setPadding(x , y)
  77. end
  78. cc.Text.setText = cc.Text.setString
  79. cc.Text.getText = cc.Text.getString
  80. function cc.Text:extend(node)
  81. cc.Widget:extend(node);
  82. node:setName("Text")
  83. end
  84. function cc.Text:createNode()
  85. local layer = cc.Text:create();
  86. layer.Label = tolua.cast(layer:getVirtualRenderer() , "cc.Label");
  87. cc.Text:extend(layer);
  88. return layer;
  89. end
  90. function cc.Text:copyProperties(source)
  91. cc.Widget.copyProperties(self , source);
  92. self:setFontConfig(source:getFontConfig());
  93. self:setText(source:getString());
  94. self:setTouchScaleChangeEnabled(source:isTouchScaleChangeEnabled());
  95. self:setTextHorizontalAlignment(source:getTextHorizontalAlignment());
  96. self:setTextVerticalAlignment(source:getTextVerticalAlignment());
  97. self:setTextAreaSize(source:getTextAreaSize());
  98. end
  99. -- 设置默认值
  100. function cc.Text:setDefaults()
  101. local ttfConfig = {}
  102. ttfConfig.fontFilePath = "res/default/msyh.ttc"
  103. ttfConfig.fontSize = 30
  104. ttfConfig.glyphs = cc.GLYPHCOLLECTION_DYNAMIC
  105. ttfConfig.customGlyphs = nil
  106. ttfConfig.distanceFieldEnabled = false
  107. ttfConfig.outlineSize = 0
  108. self:setFontConfig(ttfConfig);
  109. self:setText("文本");
  110. end
  111. function cc.Text:setTextColor(color)
  112. local config = self:getFontConfig();
  113. config.texColor = color;
  114. self:setFontConfig(config);
  115. end