cc.Text.ClassName = "Text" function cc.Text:saveToXmlNode(xmlNode) cc.Widget.saveToXmlNode(self , xmlNode); xmlNode.TouchScaleChangeEnabled = self:isTouchScaleChangeEnabled(); xmlNode.Text = self:getText(); xmlNode.FontConfig = self:getFontConfig(); xmlNode.AreaSize = self:getTextAreaSize(); xmlNode.TextHorizontalAlignment = self:getTextHorizontalAlignment(); xmlNode.TextVerticalAlignment = self:getTextVerticalAlignment(); xmlNode.CharPadding = self:getCharPadding(); xmlNode.LinePadding = self:getLinePadding(); end function cc.Text:loadFromXmlNode(xmlNode) cc.Widget.loadFromXmlNode(self , xmlNode); self:setTouchScaleChangeEnabled(xmlNode.TouchScaleChangeEnabled); if xmlNode.AreaSize then self:setTextAreaSize(xmlNode.AreaSize); end local fontConfig = xmlNode.FontConfig if not fontConfig then fontConfig = {} fontConfig.fontFilePath = "res/default/msyh.ttc" fontConfig.fontSize = xmlNode.FontSize fontConfig.glyphs = cc.GLYPHCOLLECTION_DYNAMIC fontConfig.customGlyphs = nil fontConfig.distanceFieldEnabled = false fontConfig.outlineSize = 0 end self:setFontConfig(fontConfig); self:setTextHorizontalAlignment(xmlNode.TextHorizontalAlignment); self:setTextVerticalAlignment(xmlNode.TextVerticalAlignment); if xmlNode.CharPadding then self:setCharPadding(xmlNode.CharPadding); self:setLinePadding(xmlNode.LinePadding); end self:setText(xmlNode.Text); end -- 收集ui的文本,返回文本table function cc.Text:collectText() return {TextTranslator:collect(self:getString())}; end -- 翻译xmlNode里的文本,dict是字典表 function cc.Text:applyDict(dict) local translated = dict[TextTranslator:collect(self:getString())]; if translated then self:setString(TextTranslator:translate(self:getString() , translated)); end end function cc.Text:setFontConfig(ttfConfig) local label = self:getVirtualRenderer(); label:setFontConfig(ttfConfig) end function cc.Text:getFontConfig() local label = self:getVirtualRenderer(); local config = label:getFontConfig() return config; end function cc.Text:setCharPadding(padding) local label = self:getVirtualRenderer(); label:setCharPadding(padding) end function cc.Text:getCharPadding() local label = self:getVirtualRenderer(); return label:getCharPadding() end function cc.Text:setLinePadding(padding) local label = self:getVirtualRenderer(); label:setLinePadding(padding) end function cc.Text:getLinePadding() local label = self:getVirtualRenderer(); return label:getLinePadding() end function cc.Text:setPadding(x , y) local label = self:getVirtualRenderer(); label:setPadding(x , y) end cc.Text.setText = cc.Text.setString cc.Text.getText = cc.Text.getString function cc.Text:extend(node) cc.Widget:extend(node); node:setName("Text") end function cc.Text:createNode() local layer = cc.Text:create(); layer.Label = tolua.cast(layer:getVirtualRenderer() , "cc.Label"); cc.Text:extend(layer); return layer; end function cc.Text:copyProperties(source) cc.Widget.copyProperties(self , source); self:setFontConfig(source:getFontConfig()); self:setText(source:getString()); self:setTouchScaleChangeEnabled(source:isTouchScaleChangeEnabled()); self:setTextHorizontalAlignment(source:getTextHorizontalAlignment()); self:setTextVerticalAlignment(source:getTextVerticalAlignment()); self:setTextAreaSize(source:getTextAreaSize()); end -- 设置默认值 function cc.Text:setDefaults() local ttfConfig = {} ttfConfig.fontFilePath = "res/default/msyh.ttc" ttfConfig.fontSize = 30 ttfConfig.glyphs = cc.GLYPHCOLLECTION_DYNAMIC ttfConfig.customGlyphs = nil ttfConfig.distanceFieldEnabled = false ttfConfig.outlineSize = 0 self:setFontConfig(ttfConfig); self:setText("文本"); end function cc.Text:setTextColor(color) local config = self:getFontConfig(); config.texColor = color; self:setFontConfig(config); end