Adding transition effect to Director::popScene

from: Cocos2d-x Cookbook by Akihito Matsuura (Packt Publishing, 2015)

By extending Director class and adding two methods, previousScene and popScene, we can add transition effects when popping a scene after pushing a scene.

#include "cocos2d.h"

DirectorEx : public cocos2d::Director
{
public:
  Scene* previousScene(void);
  void popScene(Scene* trans);
};
#include "DirectorEx.h"

USING_NS_CC;

Scene* DirectorEx::previousScene()
{
  size_t sceneCount= _scenesStack.size();
  if (sceneCount <= 1)
  {
    return nullptr;
  }
  return _scenesStack.at(sceneCount - 2);
}

void DirectorEx::popScene(Scene* trans)
{
  _scenesStack.popBack();
  size_t sceneCount= _scenesStack.size();
  if (sceneCount == 0)
  {
    end();
  }
  else
  {
    _sendCleanupToScene= true;
    _nextScene= trans;
  }
}

This can be used as follows:

DirectorEx* directorEx= static_cast<DirectorEx*>(Director::getInstance());
Scene* prevScene= directorEx->previousScene();
Scene* pScene= TransitionFlipX::create(duration, prevScene);
directorEx->popScene(pScene);