2014-07-18 42 views
0

除去3花哨的效果我有子類Layer和overrided onEnter功能是這樣的:的cocos2d-x的階段

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我想在圖層上運行一個動作,然後將其從父級的子級列表中移除(從屏幕上移除)。 – Narek

回答

0

您覆蓋錯誤的方法 - 您應該覆蓋onExit()onExitTransitionDidStart()在父級場景轉換到另一個場景時開始在圖層上調用。另一方面,onExit()將在層離開場景時總是被調用。

編輯:你的評論是正確的。
給它一個第二個想法後,最簡單的辦法就是propably是寫一個你自己的「刪除()」方法,會做這樣的事情:

void MyLayer::remove() { 

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

} 

這將執行的操作,在刪除節點其結束。

+0

但是,當圖層已經離開場景時會調用它,因此我無法再對該圖層調用動作。 – Narek

+0

我編輯了我的答案。 – Losiowaty