我有子类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)
你覆盖了错误的方法 - 你应该覆盖onExit()
。当父级场景转换到另一个场景时,会在图层上调用onExitTransitionDidStart()
。另一方面,当图层离开场景时,将始终调用onExit()
。
编辑:您的评论是正确的 再给它一个想法,最简单的方法就是写自己的删除()'方法,会做这样的事情:
void MyLayer::remove() {
this->runAction(Sequence::create(/*your actions here*/, CallFunc::create(CC_CALLBACK_0(Layer::removeFromParent, this)), NULL);
}
这将运行一个删除节点结束的操作。