2013-09-23 2 views
0

플레이어가 승리하여 게이트를 통과하면 스코어 패널이 표시되기를 바랍니다. 일반적으로 스코어 보드가 표시됩니다. 가장 좋은 방법은 레이어를 사용하여 레이어를 아래로 당기는 것입니다. 그러나 장면 전환 만 수행하면 레이어 전환을위한 방법이 있습니까?cocos2dx/coco2d 레이어 전환

답변

0

CCTransitionScene : CCScene for CCLayer를 보지 못했지만 대부분의 애니메이션/전환을 가져올 수있는 레이어를 사용할 수 있습니다.

여기 내가 그런 상황에서하는 일이지만, 당신이 똑같은 생각을하고 있다고 생각합니다. 그럼에도 불구하고

1. 레이어를 만들어 화면 프레임 외부의 위치에 자식으로 추가하십시오. 2. CCMoveTo를 사용하여 원하는 위치로 옮길 수 있습니다.

0

저는 과거와 비슷한 것을했습니다.

  • 는 즉 setPosition를 오프 스크린 당신의 레이어를 표시합니다. (0, CCDirector :: sharedDirector() -> getWinSize() 높이 * 1.5F); 그것의 애니메이션을 완료 할 때
  • 화면으로 이동하는 동작을 만들
  • 당신은 또한 함수를 호출하는 callfunc을 사용할 수 있습니다 (I는 CCEaseSineOut를 사용하려면)
    scoreLayer-> runAction (CCSequence : (CCEaseSineOut을 만듭니다 : create (CCMoveTo :: create (1.0f, ccp (0, 0-_screenHeight * 1.5f))), CCCallFunc :: create (this, callfunc_selector (MainLayer :: scorefinishedMove)), NULL));

참고 :이 기능은 등 브래킷을 끝으로 몇 가지 수정을해야 할 수도 있습니다 그리고 당신은 오히려 당신이 할 수있는 레이어 전환 들어 runAction 기능

0

에 초기화 권리를 넣는 것보다 이러한 작업의 일부를 분리해서 할 수 있습니다 이 :

Layer2.cpp에서
CCScene* newScene = CCTransitionCrossFade::create(.5f,Layer2::scene()); 

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

CCScene * 레이어 2 :: 장면()

{

CCScene* scene = CCScene::create(); 

CCLayer* layer = new Layer2(); 
scene->addChild(layer,1); 

return scene; 

}

관련 문제