ピエールの日記 by pierre 長尾和美

ピエールです。SamuraiTraditional(サムトラ)、たけしを(逸見泰典とのユニット)でギターやってます♪思いつきをブログに! ^^v by pierre

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_

 - cocos2d-x, アプリ