我是靠谱客的博主 快乐百合,最近开发中收集的这篇文章主要介绍recorderChild()函数在什么时候调用,为什么不用SetZorder(),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、了解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()所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部