text: #include "AppDelegate.h"
  
  #include "cocos2d.h"
  #include "SimpleAudioEngine.h"
  #include "ScriptingCore.h"
  #include "cocos2dx.hpp"
  #include "cocos2d_specifics.hpp"
  #include "js_bindings_chipmunk_manual.hpp"
  
  USING_NS_CC;
  using namespace CocosDenshion;
  
  AppDelegate::AppDelegate()
  {
  }
  
  AppDelegate::~AppDelegate()
  {
      CCScriptEngineManager::sharedManager()->purgeSharedManager();
  }
  
  bool AppDelegate::applicationDidFinishLaunching()
  {
      // initialize director
      CCDirector *pDirector = CCDirector::sharedDirector();
      pDirector->setOpenGLView(CCEGLView::sharedOpenGLView());
      
      // enable High Resource Mode(2x, such as iphone4) and maintains low resource on other devices.
      // pDirector->enableRetinaDisplay(true);
      
      // turn on display FPS
      pDirector->setDisplayStats(true);
      
      // set FPS. the default value is 1.0/60 if you don't call this
      pDirector->setAnimationInterval(1.0 / 60);
      
      CCScene * pScene = CCScene::create();
      
      ScriptingCore* sc = ScriptingCore::getInstance();
      sc->addRegisterCallback(register_all_cocos2dx);
      sc->addRegisterCallback(register_cocos2dx_js_extensions);
      sc->addRegisterCallback(register_chipmunk_manual);
      sc->addRegisterCallback(register_CCPhysicsSprite);
      
      sc->start();
      
      CCScriptEngineProtocol *pEngine = ScriptingCore::getInstance();
      CCScriptEngineManager::sharedManager()->setScriptEngine(pEngine);
      ScriptingCore::getInstance()->runScript("js/main.js");
         
      return true;
  }
  
  void handle_signal(int signal) {
      static int internal_state = 0;
      ScriptingCore* sc = ScriptingCore::getInstance();
      // should start everything back
      CCDirector* director = CCDirector::sharedDirector();
      if (director->getRunningScene()) {
          director->popToRootScene();
      } else {
          CCPoolManager::sharedPoolManager()->finalize();
          if (internal_state == 0) {
              //sc->dumpRoot(NULL, 0, NULL);
              sc->start();
              internal_state = 1;
          } else {
              sc->runScript("hello.js");
              internal_state = 0;
          }
      }
  }
  
  // This function will be called when the app is inactive. When comes a phone call,it's be invoked too
  void AppDelegate::applicationDidEnterBackground()
  {
      CCDirector::sharedDirector()->stopAnimation();
      SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
      SimpleAudioEngine::sharedEngine()->pauseAllEffects();
  }
  
  // this function will be called when the app is active again
  void AppDelegate::applicationWillEnterForeground()
  {
      CCDirector::sharedDirector()->startAnimation();
      SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
      SimpleAudioEngine::sharedEngine()->resumeAllEffects();
  }
  