Lab

Cocos2d-x:重なり順の取得、変更

 Tag :  Published : 2013-10-9

Pocket

getZOrder、reorderChildを使用します。
スプライトの重なり順を取得、変更します。
> Ver3.x : 『重なり順の変更、取得』はこちら

重なり順を取得する(getZOrder)

任意の”pImg”というスプライトの重なり順を取得し、ログで出力します。

int zOrder = pImg->getZOrder();
CCLog("重なり:%d", zOrder);
    

重なり順を変更する(reorderChild)

任意の”pImg”というスプライトの重なり順を10に変更します。
数値が大きいほど手前になります。

this->reorderChild(pImg, 10);
    

以下はカンタンなサンプルです。

はじめは1.png、2.pngを数字の若い順に重なり合うように配置し、
後から1.pngを一番前へ移動させています。

    //画面サイズを取得
    CCSize winSize = CCDirector::sharedDirector()->getWinSize();
    
    for(int i=1; i<=2; i++)
    {
        //ファイル名を生成して、画像を呼び出す
        CCString* fileName = CCString::createWithFormat("%d.png", i);
        CCSprite* pImg = CCSprite::create(fileName->getCString());
        
        //画像を表示する場所(座標)を設定
        pImg->setPosition(ccp(winSize.width*(i*.1+.4), winSize.height*(i*.1+.4)));
        
        //タグをセット
        pImg->setTag(i);
        
        //表示
        this->addChild(pImg);
    }

    //タグ"1"のスプライトを呼び出し
    CCSprite* pTarget = (CCSprite*)this->getChildByTag(1);
    
    //タグ"1"のスプライトを手前に変更
    this->reorderChild(pTarget, 1);
    
cocos2d-x19行目までの状態
19行目までの状態

cocos2d-x最後まで実行した状態
最後まで実行した状態