本文转自:http://blog.youkuaiyun.com/star530/article/details/24576057
下面看一段3.0Release Notes 对于新渲染器的一段介绍:
Node 增加了新的函数 setGlobalZOrder() / getGlobalZOrder(),之前的旧函数 setZOrder() / getZOrder() 也被重命名为 setLocalZOrder() / getLocalZOrder()。
好了,看到这里我不得不停下来。 接下来请再次允许我用沉重的语气悼念多少年来一直陪伴我们左右的"setZOrder()/getZOrder()君,是谁,在我们最需要帮助的时候指引我们上下的方向;是谁,告诉我们应如何在茫茫层海中确定自己的位置?是的,是他们......goodBye,my love...擦干眼泪,我们继续往下看看这个GlobalZOrder与LocalZOrder到底是什么碗糕?
globalZOrder 是用于 渲染器 中用来给“绘制命令”排序的
localZOrder 是用于父节点的子节点数组中给 节点 对象排序的
如果上面抄袭的这段话不太理解的话,我举个例子: 假设localZOrder是微博,globalZOrder是facebook。微博上你再怎么扑腾,那影响的范围也就只是在国内,省内,市内;而facebook就不一样了,毕竟它立足于全世界,你的一句话影响的范围很可能就是世界性的。
好了,例子举完了,挺好理解的吧。如果你还说不理解的话 ,那我还真拿你有办法!请擦亮眼睛看下面的例子:
是的,这次我们的主角又出场了,热烈欢迎boy,girl_1,girl_3(男主,女主,小三)。 如果你还觉得这是单纯的男女间的追来追去,那你就太单纯了。
1、创建男主
- auto boy = Sprite::create("boy.png");
- boy->setPosition(Point(350,300));
- this->addChild(boy,1);//Z值设为1
- auto girl_1 = Sprite::create("girl_1.png");
- girl_1->setPosition(Point(15,10));
- boy->addChild(girl_1,1);//Z值为1
但是男主不服啊!身为一个男人又怎能让女人压在上面?是可忍孰不可忍(很明显,男主想歪了)!于是他想尽办法要翻身做主人!他首先想到的是使用localZOrder,也就是下面这条代码:
- boy->setLocalZOrder(100);//和之前的setZOrder的功能一样
- boy->setGlobalZOrder(100);
3、小三出现
先把小三创建出来, 小三毕竟不是正统,所以不用加到男主身上。
- auto girl_3 = Sprite::create("girl_3.png");
- girl_3->setPosition(Point(340,290));
- this->addChild(girl_3,2);//Z值为2
女主不服啊!阴差阳错之下,她看到了微博上的化妆品营销广告:“ 战胜小三,请使用setGlobalZOrder(),一个疗程,一次见效!” ,抱着破罐子破摔的心理,女主也尝试了下:
- girl_1->setGlobalZOrder(100);
运行一看,真的有效啊!