概述
一、了解recorderchild()
recorderChild函数功能主要是:改变Z轴顺序并改变遮挡关系。
SpriteZOrder::SpriteZOrder()
{
m_dir = 1;
CCSize s = CCDirector::sharedDirector()->getWinSize();
float step = s.width/11;
for(int i=0;i<5;i++)
{
CCSprite* sprite = CCSprite::create("Images/grossini_dance_atlas.png", CCRectMake(85*0, 121*1, 85, 121));
sprite->setPosition( ccp( (i+1)*step, s.height/2) );
addChild(sprite, i);
}
for(int i=5;i<10;i++)
{
CCSprite* sprite = CCSprite::create("Images/grossini_dance_atlas.png", CCRectMake(85*1, 121*0, 85, 121));
sprite->setPosition( ccp( (i+1)*step, s.height/2) );
addChild(sprite, 14-i);
}
CCSprite* sprite = CCSprite::create("Images/grossini_dance_atlas.png", CCRectMake(85*3, 121*0, 85, 121));
addChild(sprite, -1, kTagSprite1);
sprite->setPosition( ccp(s.width/2, s.height/2 - 20) );
sprite->setScaleX( 6 );
sprite->setColor(ccRED);
schedule( schedule_selector(SpriteZOrder::reorderSprite), 1);
}
void SpriteZOrder::reorderSprite(float dt)
{
CCSprite* sprite = (CCSprite*)(getChildByTag(kTagSprite1));
int z = sprite->getZOrder();
if( z < -1 )
m_dir = 1;
if( z > 10 )
m_dir = -1;
z += m_dir * 3;
reorderChild(sprite, z);
}
上面代码通过getZOrder()获得目前的z轴值,然后改变后父节点调用recorderchild函数,第一个参数是精灵对象,第二个参数是设置的z轴值。
二、为什么不直接使用sprite->SetZorder(z)
这个是CCNode类的代码,打开后发现,其实setZorder函数本身的实现就是调用reorderchild()函数;
为什么不直接调用看第二张图就行了,该函数是私有的private()
最后
以上就是快乐百合为你收集整理的recorderChild()函数在什么时候调用,为什么不用SetZorder()的全部内容,希望文章能够帮你解决recorderChild()函数在什么时候调用,为什么不用SetZorder()所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复