ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • cocos2d-x transition, parallaxnode
    Pause @/Cocos2d-x2 2013. 6. 30. 19:30

    4.7. Transition

    1. pushScene, popScene

    CCDirector::sharedDirector()->pushScene(scene);

    CCDirector::sharedDirector()->popScene();

    * 이전 상태 유지, popScene시 init()이 호출되지 않음

     

    여기서 scene의 경우 새로운 cpp/h를 만들어서 사용가능함..

    CCScene *scene = CCTransitionFadeTR::create(3.0f, TestScene1::scene()); //testScene1이 새롭게 만든것..
    CCDirector::sharedDirector()->pushScene(scene);

     


    2. replaceScene

    CCDirector::sharedDirector()->replaceScene(scene);


    3. transition effects

    - CCTransitionCrossFade

    CCScene *scene = CCTransitionCrossFade::create(0.5, GameScene::scene());


    - CCTransitionFade

    - CCTransitionFadeBL

    - CCTransitionFadeDown

    - CCTransitionFadeTR

    - CCTransitionFadeUp

    - CCTransitionFlipAngular

    - CCTransitionFlipX

     

     

    CCParallaxNode

    1. Process

    CCLayer -> CCParallaxNode -> CCSprite


    - CCLayer 생성

    CCLayer *bgLayer = CCLayer::create();

    this->addChild(bgLayer);


    - Parallax 생성

    CCParallaxNode *node = CCParallaxNode::create();

    bgLayer->addChild(node);


    - CCSprite 생성후 addChild

    CCSprite *sprBG = CCSprite::create("bg.png");

    sprBG->setAnchorPoint(ccp(0, 0));

    node->addChild(sprBG, 1, ccp(1, 0), ccp(0, 0));

    // CCNode(CCSprite), Z-order, parallaxRatio(이동속도 비율), PositionOffset(위치)

     

    bool GameScene::init()
    {
    if(!__super::init()) return false;
    // (1)
    CCSprite * pBackground = CCSprite::create("background.png");
    pBackground->setAnchorPoint(ccp(0,0));

    CCSprite * pLogo = CCSprite::create("powered.png");
    pLogo->setAnchorPoint(ccp(0,0));

    // (2)
    CCParallaxNode * pPNode = CCParallaxNode::create();
    pPNode->addChild(pBackground, 1, ccp(1.0f,0.0f), ccp(0,-160));
    pPNode->addChild(pLogo, 2, ccp(2.0f,0.0f), ccp(240,0));

    // (3)
    CCLayer * pLayer = CCLayer::create();
    pLayer->addChild(pPNode, 3);

    // (4)
    CCMoveBy * pGo = CCMoveBy::create(4, ccp(-160,0));
    CCAction * pAction = CCSequence::create(pGo, (CCMoveBy*)pGo->reverse(), NULL);
    CCAction * pRepeat = CCRepeatForever::create((CCActionInterval *)pAction);

    // (5)
    pLayer->runAction(pRepeat);

    // (6)
    addChild(pLayer);
    return true;
    }

    (1) 이미지 로드 - 이후 이동 위치 계산을 편하게 하고자 왼쪽 하단으로 앵커포인트를 지정한다.

    (2) 이미지를 넣을 CCParallaxNode 를 생성한다.
    배경 이미지는 CCParallaxNode 가 움직일 때 CCParallaxNode 안에서 X축으로 1.0 속도 비율로 움직인다. 즉, CCParallaxNode 가 움직이는 속도와 똑같이 움직인다.
    ccp(0, -160) 옵셋은 배경 이미지의 윗부분을 보여주고자 그림 위치를 아래로 내린다.

    (3) 레이어를 만든 후 거기에 CCParallaxNode를 child로 넣는다.

    (4) 애니메이션 설정

    (5) 배경 스크롤 애니메이션 지정

    (6) 최종적으로 애니메이션이 지정된 Layer를 Scene에 넣는다.

    ** CCParallaxNode를 사용하면 같은 화면에서 여러 개의 배경을 다른 속도로 움직일 수 있어서 좀 더 입체감을 줄 수 있다.

    'Pause @ > Cocos2d-x2' 카테고리의 다른 글

    cocos2d-x 프로젝트 1  (0) 2013.07.03
    cocos2d-x 사운드 및  (0) 2013.06.30
    cocos2d-x 스케쥴update, CCSpriteBatchNode  (0) 2013.06.30
    cocos2d-x animation 정리  (0) 2013.06.30
    cocos2d-x 터치 및 스케쥴 정리  (0) 2013.06.29
Designed by Tistory.