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

0

У меня есть подклассы 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
    Вы хотите заменить сцену или просто удалить слой со сцены?
  • 0
    @VikasPatidar Я хочу запустить действие на слое, а затем удалить его из дочернего списка его родителя (удалить с экрана).
Теги:
layer
cocos2d-x
cocos2d-x-3.0

1 ответ

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
    Но он вызывается, когда слой уже покинул сцену, поэтому я больше не могу вызывать действие на этом слое.
  • 0
    Я отредактировал свой ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню