对于不同控件的属性解析,有多种方案可以选择。

比较简单的一种是通过原控件的派生方式构建多态解析器,每个子类负责解析该类控件的属性。另一种是使用组件式解析,两者差别不大,前者基于多态,后者基于组合。组件式还可以引入属性映射:建立属性名与组件类别的关联,只需配置一次,即可实现自动解析。

以下示例采用多态解析方式:


                class NodeReader
                {
                public:
                	void NodeParse(Node*ret)
                	{
                		ret->setPositionX(100);
                	}
                };
                
                class SpriteReader :public NodeReader
                {
                public:
                	void SpriteParse(Sprite*ret)//当然可以用virtual 来统一接口名
                	{
                
                		NodeReader::NodeParse(ret);
                		ret->setFlippedX(true);
                	}
                };
                
                
                
                Node * creater()
                {
                	SpriteReader *reader = new SpriteReader;
                
                	Sprite *ret = Sprite::create("1.png");
                	reader->SpriteParse(ret);
                
                	return ret;
                
                
                }
                
                	this->addChild(creater());