popSceneでどうやってアニメーション遷移するの?
CCDirectorクラスには、遷移する際にreplaceScene,pushScene,popSceneと3種類の遷移関数があるのだが、
popSceneでは、遷移アニメーションが使えないのだ。
ちなみに各意味は以下の通り。(すみません。出典は忘れました。)
- (replaceScene)直前のsceneはもう使わないから捨ててしまう方法。基本はこれになります。
- (pushScene)直前のsceneに戻る予定があるので、メモリに取っておく方法です。
- (popScene)pushしたsceneを消して、元のsceneに戻る処理。
CCDirectorを直接改造すると一応できます。
CCScene *previousScene(void) { unsigned int c = m_pobScenesStack->count(); if (c <= 1) return NULL; return (CCScene*)m_pobScenesStack->objectAtIndex(c - 2); } void popScene(CCScene *trans) { CCAssert(m_pRunningScene != NULL, "running scene should not null"); m_pobScenesStack->removeLastObject(); unsigned int c = m_pobScenesStack->count(); if (c == 0) { end(); } else { m_bSendCleanupToScene = true; m_pNextScene = trans; // (CCScene*)m_pobScenesStack->objectAtIndex(c - 1); } }
CCScene *prevScene = CCDirector::sharedDirector()->previousScene(); CCTransitionScene* transition = CCTransitionPageTurn::create(0.66, prevScene, false); CCDirector::sharedDirector()->popScene(transition);
ただ、これ、cocos2d-xのコード自体を修正しないといけないという恐ろしい手法です。
最底辺にはとても出来ません。
結局、全部replaceScene使うのが良いのかねえ。。。
ディスカッション
コメント一覧
まだ、コメントがありません