-- 扩展ScalePressedEffect类 cc.ScalePressedEffect.ClassName = "ScalePressedEffect" -- 保存操作 function cc.ScalePressedEffect:saveToXmlNode(xmlNode) xmlNode.ClassName = self.ClassName; xmlNode.Scale = self:getScale(); xmlNode.Duration = self:getDuration(); end -- 读取操作 function cc.ScalePressedEffect:loadFromXmlNode(xmlNode) self:setScale(xmlNode.Scale); self:setDuration(xmlNode.Duration); end -- 扩展ColorPressedEffect类 cc.ColorPressedEffect.ClassName = "ColorPressedEffect" -- 保存操作 function cc.ColorPressedEffect:saveToXmlNode(xmlNode) xmlNode.ClassName = self.ClassName; xmlNode.Color = self:getColor(); xmlNode.Duration = self:getDuration(); end -- 读取操作 function cc.ColorPressedEffect:loadFromXmlNode(xmlNode) self:setColor(xmlNode.Color); self:setDuration(xmlNode.Duration); end -- 扩展OpacityPressedEffect类 cc.OpacityPressedEffect.ClassName = "OpacityPressedEffect" -- 保存操作 function cc.OpacityPressedEffect:saveToXmlNode(xmlNode) xmlNode.ClassName = self.ClassName; xmlNode.Opacity = self:getOpacity(); xmlNode.Duration = self:getDuration(); end -- 读取操作 function cc.OpacityPressedEffect:loadFromXmlNode(xmlNode) self:setOpacity(xmlNode.Opacity); self:setDuration(xmlNode.Duration); end -- 扩展MultiPressedEffect类 cc.MultiPressedEffect.ClassName = "MultiPressedEffect" -- 保存操作 function cc.MultiPressedEffect:saveToXmlNode(xmlNode) xmlNode.ClassName = self.ClassName; local effects = {}; xmlNode.Effects = effects; for i = 0 , self:getEffectCount() - 1 do local effect = self:getEffect(i); local effectNode = {}; effect:saveToXmlNode(effectNode); table.insert(effects , effectNode); end end -- 读取操作 function cc.MultiPressedEffect:loadFromXmlNode(xmlNode) for i , v in ipairs(xmlNode.Effects) do local effect = cc[v.ClassName]; if not effect then error("找不到类型:" .. v.ClassName); end local instance = effect:create(); instance:loadFromXmlNode(v); self:addEffect(instance); end end