cocos2d-x 3 причудливый эффект снятия со сцены

У меня есть подклассы Layer и переопределено onEnter функционировать так:

void MyLayer::onEnter()
{
Layer::onEnter();

Size visibleSize = Director::getInstance()->getVisibleSize();
Point visibleOrigin = Director::getInstance()->getVisibleOrigin();
setPosition(visibleOrigin.x, visibleOrigin.y + visibleSize.height);
runAction(EaseOut::create(MoveTo::create(1, Vec2(visibleOrigin)), 10));
}

Это приводит к тому, что мой слой попадает на экран сверху и с легким эффектом. Теперь я хочу удалить слой из аромата с таким же эффектом. Я пытался использовать onExitTransitionDidStart но это не помогает

void MyLayer::onExitTransitionDidStart()
{
Size visibleSize = Director::getInstance()->getVisibleSize();
Point visibleOrigin = Director::getInstance()->getVisibleOrigin();
runAction(EaseIn::create(MoveTo::create(1, Vec2(visibleOrigin.x, visibleOrigin.y + visibleSize.height)), 10));
}

Как я могу контролировать способ удаления слоя со сцены?

0

Решение

Вы переопределили неправильный метод — вы должны переопределить onExit(), onExitTransitionDidStart() вызывается для слоев, когда начинается переход родительской сцены в другую сцену. С другой стороны, onExit() будет вызываться всегда, когда слой покидает сцену.

Изменить: Ваш комментарий правильный.
Подумав еще раз, проще всего было бы написать собственный метод remove (), который бы выполнял что-то вроде этого:

void MyLayer::remove() {

this->runAction(Sequence::create(/*your actions here*/, CallFunc::create(CC_CALLBACK_0(Layer::removeFromParent, this)), NULL);

}

Это запустит действие, которое удалит узел в его конце.

0

Другие решения


По вопросам рекламы [email protected]