|
- require("luaScript.Tools.Widgets.PressedEffect")
-
- cc.Button.ClassName = "Button"
-
- function cc.Button:saveToXmlNode(xmlNode)
- cc.Widget.saveToXmlNode(self , xmlNode);
-
- xmlNode.scale9Enable = self:isScale9Enabled();
- xmlNode.NormalImage = getUITexture(self:getNormalFileName() , self:getNormalTexType());
- xmlNode.PressedImage = getUITexture(self:getPressedFileName() , self:getPressedTexType());
- xmlNode.DisabledImage = getUITexture(self:getDisabledFileName() , self:getDisabledTexType());
-
- if xmlNode.scale9Enable then
- xmlNode.capInsets = self:getCapInsetsNormalRenderer();
- end
- xmlNode.text = self:getTitleText();
- xmlNode.TitleFontConfig = self:getFontConfig();
-
- xmlNode.CharPadding = self:getCharPadding();
- xmlNode.LinePadding = self:getLinePadding();
-
- local pressedEffect = self:getPressedEffect();
- if pressedEffect then
- xmlNode.PressedEffect = {};
- pressedEffect:saveToXmlNode(xmlNode.PressedEffect);
- else
- xmlNode.PressedEffect = false;
- end
- end
-
- function cc.Button:loadFromXmlNode(xmlNode)
- cc.Widget.loadFromXmlNode(self , xmlNode);
- self:setScale9Enabled(xmlNode.scale9Enable);
- setUITexture(self.loadTextureNormal , self , xmlNode.NormalImage);
- setUITexture(self.loadTexturePressed , self , xmlNode.PressedImage);
- setUITexture(self.loadTextureDisabled , self , xmlNode.DisabledImage);
-
- local fontConfig = xmlNode.TitleFontConfig
- if not fontConfig then
- fontConfig = {}
- fontConfig.fontFilePath = "res/default/msyh.ttc"
- fontConfig.fontSize = xmlNode.TitleFontSize
- fontConfig.glyphs = cc.GLYPHCOLLECTION_DYNAMIC
- fontConfig.customGlyphs = nil
- fontConfig.distanceFieldEnabled = false
- fontConfig.outlineSize = 0
- fontConfig.txtColor = xmlNode.TitleColor;
-
- end
- self:setFontConfig(fontConfig);
-
- if xmlNode.CharPadding then
- self:setCharPadding(xmlNode.CharPadding);
- self:setLinePadding(xmlNode.LinePadding);
- end
- self:setTitleText(xmlNode.text);
-
-
- if self:isScale9Enabled() then
- self:setCapInsets(xmlNode.capInsets);
- end
-
- local pressedEffect = xmlNode.PressedEffect;
- if pressedEffect ~= nil then
- if pressedEffect ~= false then
- local effect = cc[pressedEffect.ClassName];
- if not effect then
- error("找不到类型:" .. pressedEffect.ClassName);
- end
- local instance = effect:create();
- instance:loadFromXmlNode(pressedEffect);
- self:setPressedEffect(instance);
- end
- else
- -- 给个默认值,兼容老版本
- self:setPressedEffect(cc.ScalePressedEffect:create());
- end
- end
-
-
- function cc.Button:setFontConfig(ttfConfig)
- local label = self:getTitleRenderer();
- label:setFontConfig(ttfConfig)
- end
-
- function cc.Button:getFontConfig()
- local label = self:getTitleRenderer();
- local config = label:getFontConfig()
- return config;
- end
-
- -- 收集ui的文本,返回文本table
- function cc.Button:collectText()
- return {TextTranslator:collect(self:getTitleText())};
- end
-
- -- 翻译xmlNode里的文本,dict是字典表
- function cc.Button:applyDict(dict)
- local translated = dict[TextTranslator:collect(self:getTitleText())];
- if translated then
- self:setTitleText(TextTranslator:translate(self:getTitleText() , translated));
- end
- end
-
-
- function cc.Button:setCharPadding(padding)
- local label = self:getTitleRenderer();
- label:setCharPadding(padding)
- end
-
- function cc.Button:getCharPadding()
- local label = self:getTitleRenderer();
- return label:getCharPadding()
- end
-
- function cc.Button:setLinePadding(padding)
- local label = self:getTitleRenderer();
- label:setLinePadding(padding)
- end
-
- function cc.Button:getLinePadding()
- local label = self:getTitleRenderer();
- return label:getLinePadding()
- end
-
- function cc.Button:setPadding(x , y)
- local label = self:getTitleRenderer();
- label:setPadding(x , y)
- end
-
- function cc.Button:extend(node)
- cc.Widget:extend(node);
- node:setName("Button")
- end
-
- function cc.Button:copyProperties(source)
- cc.Widget.copyProperties(self , source);
- self:setFontConfig(source:getFontConfig());
- end
-
-
- function cc.Button:createNode()
- local layer = cc.Button:create();
-
- cc.Button:extend(layer);
- return layer;
- end
-
- function cc.Button:setText(str)
- self:setTitleText(str);
- end
-
- -- 设置默认值
- function cc.Button: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:setTitleText("确定");
- self:loadTextureNormal("res/default/button.png");
- self:setCapInsets(cc.rect(0,0,0,0));
-
- -- 默认带一个缩放效果
- self:setPressedEffect(cc.ScalePressedEffect:create());
- -- 默认需要响应touch事件
- self:setTouchEnabled(true)
- end
-
- -- 重新加载这个控件的所有图片
- function cc.Button:postloadImage()
- local isScale9 = self:isScale9Enabled();
- self:setScale9Enabled(not isScale9);
- self:setScale9Enabled(isScale9);
- end
-
- -- 收集这个控件用到了哪些PList文件
- function cc.Button:collectPListFiles()
- local files = {};
- collectPListFile(files , self:getNormalFileName() , self:getNormalTexType());
- collectPListFile(files , self:getPressedFileName() , self:getPressedTexType());
- collectPListFile(files , self:getDisabledFileName() , self:getDisabledTexType());
-
- function getParent(node, path)
- local parent = node:getParent()
- if parent then
- local nameParent = parent:getName()
- path = nameParent.. "\\"..path
-
- return getParent(parent, path)
- else
- return path
- end
- end
-
- local nodePath = getParent(self, self:getName());
-
- for k,v in pairs(files) do
- print("plist = " .. v .. ", nodePath = ".. nodePath)
- end
-
- return files;
- end
-
- function cc.Button:loadTextureFromPlist(filename)
- self:loadTextureNormal(filename, cc.TextureResType.plistType);
- end
|