cocos2d-x AppDelegate.cpp
2017/10/25
サンプルのソースをみると、
classフォルダには必ず
AppDelgate.cpp と AppDelgate.h がセットであります。
AppDelgateクラスはcocos2dxで最初に呼び出される。らしいです。
それから、どのクラスからも呼ぶことができるので、
共通的な処理等を記載しておくとよい。らしいです。
その中身は。。。
下記になりますが、自分の使っているバージョンのものなのであしからず。。
コメントも入れておきました。
ちなみにcppはc++のファイルであることを表し、
hはヘッダーファイルであることを表します。
ヘッダーファイルは定義を書くだけで、
実際にはcppファイルに処理等を書いていきます。
下記の例では、
ゲームの枠の大きさを決めたり、
スクリーンのサイズを合わせてみたり、
電話がかかってきたときの処理があったりします。
そして、次のシーンへ遷移しています。
自分の場合はスプラッシュシーンへ遷移するようにしました。
まずはこのクラスが呼ばれて、
次にスプラッシュシーンを呼び出す。
その後、次のタイトルシーンとかを呼び出せば
良い感じでアプリができるんでないすか??
// AppDelegate.cpp です!! #include "AppDelegate.h" #include "SplashScene.h" USING_NS_CC; AppDelegate::AppDelegate() {} // ~(チルダ)がついているメソッドは、 // このクラスが消滅するときに呼ばれるみたい。 // なんか解放するときに良いみたい。 AppDelegate::~AppDelegate() {} // イニシャライズ(applicationDidFinishLaunching()) bool AppDelegate::applicationDidFinishLaunching() { // initialize director Director *director = Director::getInstance(); // OpenGLを呼ぶ director->setOpenGLView(EGLView::getInstance()); // スクリーンのサイズ Size screenSize = EGLView::getInstance()->getFrameSize(); // ゲームのサイズを決める Size designSize = Size(320, 480); // stdはstring std::vector<std::string> searchPaths; // スクリーンサイズが320px以上だと // hdフォルダのリソース(画像など)が使われる。 // それ以外だと // sdフォルダのリソースが使われる。 if (screenSize.width > 320){ searchPaths.push_back("hd"); director->setContentScaleFactor (960.0f/designSize.height); }else{ searchPaths.push_back("sd"); director->setContentScaleFactor (480.0f/designSize.height); } FileUtils::getInstance()->setSearchPaths(searchPaths); // OpenGLViewにDesignResolutionSize // というパラメータがあるので、 // AppDelegate.cppのapplicationDidFinishLaunching // でセットしてあげると // 勝手にサイズを調整してくれるのでとても便利です。 EGLView::getInstance() ->setDesignResolutionSize (designSize.width, designSize.height, ResolutionPolicy::NO_BORDER); // FPS(デフォルトの3段の数字)をディスプレイに // 表示するかのOn/Off director->setDisplayStats(false); // 1秒間に60フレーム。デフォルト。 director->setAnimationInterval(1.0 / 60); // シーンを作成 Scene *scene = SplashScene::scene(); // 実行 director->runWithScene(scene); return true; } // アプリが非アクティブになったら呼ばれる。 // 電話がかかってきたなども同様。 void AppDelegate::applicationDidEnterBackground() { Director::getInstance()->stopAnimation(); } // アプリが再度アクティブになったら呼ばれる。 void AppDelegate::applicationWillEnterForeground() { Director::getInstance()->startAnimation(); }
// AppDelegate.h です!! #ifndef _APP_DELEGATE_H_ #define _APP_DELEGATE_H_ #include "cocos2d.h" class AppDelegate : private cocos2d::Application { public: AppDelegate(); virtual ~AppDelegate(); virtual bool applicationDidFinishLaunching(); virtual void applicationDidEnterBackground(); virtual void applicationWillEnterForeground(); }; #endif // _APP_DELEGATE_H_