首页 > 代码库 > 【cocos2d-x学习笔记】ZOder、tag、场景切换、精灵的各种创建方式、三个特殊层、坐标体系
【cocos2d-x学习笔记】ZOder、tag、场景切换、精灵的各种创建方式、三个特殊层、坐标体系
ZOder:
1、是描述渲染顺序的值,每个CCNode都有ZOder,默认是0。
2、ZOder越大则越后面绘制、如果ZOder值相同,那么看arrival(全局变量每次加一)顺序,先加入的节点先绘制,ZOder只在相同父节点的节点直接进行比较
tag:是一个节点的身份证,方便通过getChildByTag来获取节点对象,它的意义在于减少成员变量
TAG只在相同父节点的节点之间有效
TAG在相同父节点的儿子之间不能相同,相同情况cocos不报错,getChildByTag可能会获取到不是你想要的CCNode
一般用枚举表示TAG以防止重复
TAG有时候用来当ID使用
场景切换
CCDirector
runWithScene 运行场景
replaceScene 切换场景 原场景释放
pushScene 切换场景 原场景保留
popScene 与push配合使用 切换
pause 暂停
resume 这个我忘记了
end 结束
精灵创建
1、通过文件直接创建精灵
CCSprite *sprite = CCSprite::create();
2、通过纹理去创建精灵
CCTexture2D *texture = CCTextureCache::sharedTextureCache()->addImage("blocks.png");
CCSprite *sprite = CCSprite::createWithTextrue(texture);
3、通过精灵帧创建精灵
CCSprtieFrame *frame = CCSprtieFrame::createWithTexture(texture, CCRectMake(0, 0, 80, 80));
CCSprite *sprite = CCSprite::createWithSpriteFrame(frame);
4、通过精灵帧缓存创建精灵
CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFrame(frame, "MyFrame");
CCSprite *sprite = CCSprite::createWithSpriteFrameName("MyFrame");
三个特殊层
CCLayerColor 可以改变背景,可以设置大小
CCLayerColor *layer = CCLayerColor::create(ccc4(255, 0, 0, 255), winSize.weith/2, winSize.height/2);
CCLayerGradient 有渐变效果的层(颜色、透明度、方向)
CCLayerGradient *layer = CCLayerGradient::create(ccc4(0, 255, 0, 0), ccc4(0, 0, 255, 255));
CCLayerMultiplex 很少用,可以包含好几个层,但是只显示其中一个
CCLayerMultiplex *multi = CCLayerMulitiplex::create(layer1, layer2, NULL);
multi->switchTO(1); // 显示layer2
坐标体系
GL坐标体系:左下角为原点
UI最标体系:左上角为原点
世界坐标体系:是窗口的坐标体系,它是GL坐标体系,原点在窗口的左下角
节点坐标体系:是Node的坐标体系,它也是GL坐标体系,和世界坐标体系不同的是,它的原点是节点的左下角。
一个节点调用setPosition时,使用的参数是它的父节点(渲染树)的坐标体系。
CCLayer默认大小和窗口一样,所以坐标体系和世界坐标体系重合。
CCScene默认大小和窗口一样,所以坐标体系和世界坐标体系重合。
GL坐标和世界坐标之间的转换
CCDirector::sharedDirector()->convertToUI();
CCDirector::sharedDirector()->convertToGL();
世界坐标和节点坐标之间的转换
CCNode::convertoNodeSpace(CCPoint ptInWorld);
CCNode::convertoWorldSpace(CCPoint ptInNode);
按照锚点为原点来进行转换
CCNode::converToNodeSpaceAR(CCPoint ptInWorld); 返回NODE坐标,以锚点为原点
CCNode::converToWorldSpaceAR(CCPoint ptInNode);
用touth作为参数转换
CCNode::convertTouchToNodeSpace 直接将触摸转换成节点坐标系的坐标
【cocos2d-x学习笔记】ZOder、tag、场景切换、精灵的各种创建方式、三个特殊层、坐标体系