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

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

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


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());