cocos2d- x3从舞台移除的花哨效果

cocos2d-x 3 fancy effect of removing from stage

本文关键字:x3 舞台 cocos2d-      更新时间:2023-10-16

我有子类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);
}

这将运行一个动作,在其末尾删除节点。