2013-09-23 2 views
0

Надеюсь выбить панель очков, когда игроки победят и пройдут мимо ворот. Обычно он всплывает на табло. Я думаю, что лучший способ - использовать слой и снести его. Но я получаю только переход от сцены, просто интересно, есть ли способ перехода слоя?cocos2dx/coco2d layer transition

ответ

0

Не видел эквивалент CCTransitionScene: CCScene для CCLayer, но слои могут выполнять операции, используя которые мы можем выявить большинство анимаций/переходов.

Вот что я делаю в таких ситуациях, но думаю, вы думаете об одном и том же. Тем не менее,

1. Создайте слой и добавьте его в качестве ребенка в положение за пределами рамки экрана. 2. Затем используйте CCMoveTo, чтобы переместить его в нужное место, когда вы хотите его вытащить.

0

Я сделал что-то подобное в прошлом.

  • Покажите свой слой закадровый SetPosition (т.е. 0, CCDirector :: sharedDirector() -> getWinSize() высота * 1.5f.);
  • создать действие, чтобы переместить его на экране (я люблю использовать CCEaseSineOut)
  • вы также можете использовать callfunc для вызова функции, когда он закончил свою анимацию
    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

Для перехода слоя вы можете сделать это:

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

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

В Layer2.cpp

CCScene * Layer2 :: сцена()

{

CCScene* scene = CCScene::create(); 

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

return scene; 

}