У меня есть подклассы 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));
}
Как я могу контролировать способ удаления слоя со сцены?
Вы переопределили неправильный метод — вы должны переопределить onExit()
, onExitTransitionDidStart()
вызывается для слоев, когда начинается переход родительской сцены в другую сцену. С другой стороны, onExit()
будет вызываться всегда, когда слой покидает сцену.
Изменить: Ваш комментарий правильный.
Подумав еще раз, проще всего было бы написать собственный метод remove (), который бы выполнял что-то вроде этого:
void MyLayer::remove() {
this->runAction(Sequence::create(/*your actions here*/, CallFunc::create(CC_CALLBACK_0(Layer::removeFromParent, this)), NULL);
}
Это запустит действие, которое удалит узел в его конце.