Cocos2dx 3.0 过渡篇 globalZOrder()与localZOrder()

转自 http://blog.csdn.net/star530/article/details/24576057

对转载的内容 进行摘取


Node 增加了新的函数 setGlobalZOrder() / getGlobalZOrder(),之前的旧函数 setZOrder() / getZOrder() 也被重命名为 setLocalZOrder() / getLocalZOrder()。


globalZOrder 是用于 渲染器 中用来给“绘制命令”排序的
localZOrder 是用于父节点的子节点数组中给 节点 对象排序的

如果上面抄袭的这段话不太理解的话,我举个例子:假设localZOrder是微博,globalZOrder是facebook。微博上你再怎么扑腾,那影响的范围也就只是在国内,省内,市内;而facebook就不一样了,毕竟它立足于全世界,你的一句话影响的范围很可能就是世界性的。



是的,这次我们的主角又出场了,热烈欢迎boy,girl_1,girl_3(男主,女主,小三)。如果你还觉得这是单纯的男女间的追来追去,那你就太单纯了。
1、创建男主

[cpp]  view plain copy
  1. auto boy = Sprite::create("boy.png");  
  2. boy->setPosition(Point(350,300));  
  3. this->addChild(boy,1);//Z值设为1  
2、创建女主
[cpp]  view plain copy
  1. auto girl_1 = Sprite::create("girl_1.png");  
  2. girl_1->setPosition(Point(15,10));  
  3. boy->addChild(girl_1,1);//Z值为1  
我们都知道,女主是属于男主的,所以是:boy->addChild(girl_1,1);程序运行后如图所示, 可以看到,女主是压在男主上面的(请不要想太多,谢谢

但是男主不服啊!身为一个男人又怎能让女人压在上面?是可忍孰不可忍(很明显,男主想歪了)!于是他想尽办法要翻身做主人!他首先想到的是使用localZOrder,也就是下面这条代码:
[cpp]  view plain copy
  1. boy->setLocalZOrder(100);//和之前的setZOrder的功能一样  
事实是很残酷的,男主哀嚎一声: 坑爹啊!难道就没有办法了吗?就在这时,男主眼前一亮!因为他看到了路边贴的牛皮癣广告,广告词赫然写着:治不*不*,请使用setGlobalORder(),还你**风采。 于是男主赶紧尝试了下:
[cpp]  view plain copy
  1. boy->setGlobalZOrder(100);  
果然,一个疗程过去,男主真的在女主上面了!实在是太神奇了!如图所示:

3、小三出现
先把小三创建出来, 小三毕竟不是正统,所以不用加到男主身上。
[cpp]  view plain copy
  1. auto girl_3 = Sprite::create("girl_3.png");  
  2. girl_3->setPosition(Point(340,290));  
  3. this->addChild(girl_3,2);//Z值为2  
从代码可以看出来, 小三的Z值设置为2,而男主的Z值为1,如果按照正常的逻辑来看,不管女主怎么化妆,小三都注定是比她更有吸引力(也就是小三会在女主上面) ,如下图

女主不服啊!阴差阳错之下,她看到了微博上的化妆品营销广告:“ 战胜小三,请使用setGlobalZOrder(),一个疗程,一次见效!” ,抱着破罐子破摔的心理,女主也尝试了下:
[cpp]  view plain copy
  1. girl_1->setGlobalZOrder(100);  

运行一看,真的有效啊!




你可能感兴趣的:(cocos2dx,2.0,到,3.0,过渡)