• TOP
  • >
  • その他
  • >
  • クラスを作成する

クラスを作成する

cocos2d-xで、独自のクラスを作る方法を紹介します。
Ver3.xについての記述もしています。

Xcodeで新しいファイルを作成する

Xcodeのプロジェクトナビの上で、「右クリック」を押して、「New File」を選択して下さい。
2013_4_22_newclass000

「C and C++」から、[C++ Class]を選びます。
2013_4_22_newclass001

クラスの名前と保存先を選択します。

独自のクラスを作成する

できたファイルをcocos2d-xで利用できるように修正をします。

ヘッダーファイルの修正

初期のヘッダーファイルは以下のようになっています。

#ifndef __cocos2d_x__TestLayer__
#define __cocos2d_x__TestLayer__

#include <iostream>

#endif /* defined(__cocos2d_x__TestLayer__) */


これを修正します。
cocos2dのヘッダーを読み込んで、クラスを定義します。
#ifndef __cocos2d_x__TestLayer__
#define __cocos2d_x__TestLayer__

//<iostream>を"cocos2d.h"に変更
#include "cocos2d.h"

//クラスの定義をします。
//cocos2dx2.x
class TestLayer : public cocos2d::CCLayer{


};

//cocos2dx3.x
class TestLayer : public cocos2d::Layer{


};

#endif /* defined(__cocos2d_x__TestLayer__) */

次にクラス内で利用するメソッドやプロパティを記載します。
//cocos2dx2.x
class TestLayer : public cocos2d::CCLayer{
  
public:
    //初期化のメソッド
    virtual bool init();
    
    static cocos2d::CCScene*scene();
    
    //create()を使えるようにしている。
    CREATE_FUNC(NewLayer);

};

//cocos2dx3.x
class TestLayer : public cocos2d::Layer{
  
public:
    //初期化のメソッド
    virtual bool init();
    static cocos2d::Scene*scene();
    //create()を使えるようにしている。
    CREATE_FUNC(NewLayer);

};



cppファイルの修正

先ほど設定したヘッダーファイルを元に、cppのファイルに実際のコードを書いていきます。

初期のコードは、ヘッダーファイルを読み込む以下のコードしかありません。
#include "TestLayer.h"


まずはcocos2dのネームスペースを使用する以下のコードを書いて下さい。
これを付けないとcocos2d-xが利用できません
USING_NS_CC;

次に、ヘッダーファイルで定義をしたメソッドの具体的な中身を記述していきます。
//cocos2dx2.x
CCScene *TestLayer::scene(){

 //scene()メソッドの中身を記載

}

bool TestLayer::init(){

    if (!CCLayer::init()) {
        
        return false;
    }

    //init()メソッドの中身を記載

    return true;
}


//cocos2dx3.x
Scene *TestLayer::scene(){

 //scene()メソッドの中身を記載

}

bool TestLayer::init(){

    if (!Layer::init()) {
        
        return false;
    }

    //init()メソッドの中身を記載

    return true;
}



例えば、CCLayerクラスの場合は、こんな感じでコードがかけるでしょう。
[cocos2dx2.x]
#include "TestLayer.h"

USING_NS_CC;

CCScene *TestLayer::scene(){
    
    CCScene *scene = CCScene::create();
    TestLayer *layer = TestLayer :: create();
    scene->addChild(layer);

    return scene;
    
    
}


bool TestLayer::init(){
    
    
    if (!CCLayer::init()) {
        
        return false;
    }
    
    CCSprite *sprite = CCSprite::create("gold.png");
    sprite->setPosition(ccp(200,300));
    
    addChild(sprite);
    
    
    return true;
}

[cocos2dx3.x]
#include "TestLayer.h"

USING_NS_CC;

Scene *TestLayer::scene(){
    
   auto scene = Scene::create();
   auto layer = TestLayer::create();
   scene->addChild(layer);

   return scene;
    
    
}


bool TestLayer::init(){
    
    
    if (!Layer::init()) {
        
        return false;
    }
    
   auto sprite = Sprite::create("Image.png");
   sprite->setPosition(Vec2(200,300));
    
   addChild(sprite);
    
    
   return true;
}

            

経営育成ゲーム「わたしの動物園」をリリースしました!

cocos2dxを使って作成したアプリを作成しました。
無料で遊べますので、ぜひゲーム作りの参考にしてみて下さい!

【Sponsored Link】

更新履歴