LayerItem 渲染attachNode 的作用

LayerItem

其成员变量:

	private:
		// render to which Layer
		// Here just record the Layer's reference
		ILayer* mLayer;
		// Layer nodes 
		ILayerNode * mLayerNode;
		ILayerNode * mSaveLayerNode;

		typedef std::vector<LayerItem*> VectorLayerItem;
		// It's own layerItem for render
		VectorLayerItem mLayerItems;
		// It's sub layerItem for records
		VectorLayerItem mLayerNodes;

		// record the sub widget
		VectorSubWidget mDrawItems;

		ITexture* mTexture;

有趣的是 SubWidget终于出现了。 

其虚函数 虚函数都被实现了,想是实现默认的,然后又子类进行修改 :

		virtual void attachItemToNode(ILayer* _layer, ILayerNode* _node);
		virtual void detachFromLayer();
		virtual void upLayerItem();
分析 attacheLayerNode

	void LayerItem::attachToLayerItemNode(ILayerNode* _item, bool _deep)
	{
		MYGUI_DEBUG_ASSERT(nullptr != _item, "attached item must be valid");

		// Initialise the mLayerNode member value
		mLayerNode = _item;
		// The subwidget has been assigned to mDrawItems
		for (VectorSubWidget::iterator skin = mDrawItems.begin(); skin != mDrawItems.end(); ++skin)
		{
			(*skin)->createDrawItem(mTexture, _item);
		}

		for (VectorLayerItem::iterator item = mLayerItems.begin(); item != mLayerItems.end(); ++item)
		{
			(*item)->attachToLayerItemNode(_item, _deep);
		}

		for (VectorLayerItem::iterator item = mLayerNodes.begin(); item != mLayerNodes.end(); ++item)
		{
			// deep copy to the LayerNode
			if (_deep)
			{
				ILayerNode* child_node = _item->createChildItemNode();
				(*item)->attachToLayerItemNode(child_node, _deep);
			}
		}
	}

谁是根节点?    

ILayerNode

(*skin)->createDrawItem(mTexture, _item); 跳转SubWedget

至此建立起ISubWedget与Widget的关系


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值