2015年

2月

01日

Cocos2d-xVer 3.3 (C++) Labelを作成し"Hello World"の文字を表示する


cocos newコマンドでプロジェクトを作成
プロジェクト名は「Label」で、一意に特定するためのパッケージ名「net.tks2.projects」です。言語はC++なので「cpp」とします。次のコマンドを実行してください。
パッケージ名はiOS/Androidともに、実際にAppStore(GooglePlayStore)に登録する際に必要なモノです。Xcode上からでもプロジェクトを作成できますが、クロスプラットフォーム(Android)開発を行うのでcocos newコマンドを利用しています。


cocos newコマンド
cocos new Label -d ~/Documents -p net.tks2.projects -l cpp


コマンドが正常に完了するとDocumentsディレクトリにLabelフォルダーが作成されproj.ios_mac/Label.xcodeprojが作成されます。

Documents/Label/proj.ios_mac/Label.xcodeproj


iOS向けプロジェクトをXcodeで開きます。


不要なサンプルクラスを削除する
HelloWorldScene.cppとHelloWorldScene.hを選択し右クリックでファイル一覧を出しDeleteをクリックする。


Move to Trash(ゴミ箱に移動)を選択し削除する。

AppDelegateクラスで1件のエラー(HelloWordScene.hが見つからない)が発生しますが、この時点では気にしなくても大丈夫です。


続いてLabelを実装するクラスを用意します。フォルダーを選択し右クリックでファイル一覧を出しNew File...をクリックします。


追加するファイルの種類はC++のクラスなので続いてLabelを実装するクラスを用意します。iOSのSourceを選択しC++ Fileをクリックします。


追加するファイル名を入力します。ここではTopとします。Nextボタンをクリックします。


Classesのフォルダー内に作成します。Createボタンをクリックします。


ファイル作成後、ひな形となるコードが表示されていますが、それらすべて削除して、それぞれ次に示すコードを入力してください。なお、ヘッダーにはLayerクラスを継承するTopクラスとメンバ関数の宣言を、実装部にはscene関数とinit関数の最小限の実装を行います。

Top.h


#ifndef __Label__Top__

#define __Label__Top__


#include "cocos2d.h"


class Top : public cocos2d::Layer

{

public:

    

    virtual bool init();

    

    static cocos2d::Scene* createScene();

    

    CREATE_FUNC(Top);

};



#endif /* defined(__Label__Top__) */




Top.cpp


#include "Top.h"


USING_NS_CC;


Scene* Top::createScene()

{

    // 'scene' is an autorelease object

    auto scene = Scene::create();

    

    // 'layer' is an autorelease object

    auto layer = Top::create();

    

    // add layer as a child to scene

    scene->addChild(layer);

    

    // return the scene

    return scene;

}



// INIT」初期化

bool Top::init()

{

    if ( !Layer::init() )

    {

        return false;

    }

        

    return true;

}


これでTopクラスの用意が出来ました。


HelloWorldSceneクラスを削除した際にエラーが発生しました。AppDelegate.cppのエラー箇所の修正を行います。

#include "HelloWorldScene.h"

                  ↓変更

#include "Top.h"


"HelloWorldScene.h"を"Top.h"に変更します。


AppDelegate.cppのapplicationDidFinishLaunching関数内でエラーが発生します。

エラー箇所の修正を行います。

auto scene =  HelloWorldScene::createScene();

                  ↓変更

auto scene =  Top::createScene();


"HelloWorldScene"を"Top"に変更します。


これでLabelを作成し"Hello World"の文字を表示していきます。

⚪️コード記述の場合

コード記述の場合はFont、Fontサイズ、Fontの大きさ、位置、Fontカラー、表示命令など記述が必要

 

cocos2dx3.x

cocos2dx3.xからクラスが変わっていますので注意下さい。

Labelクラスを使います。
LabelTTFクラスも利用はできますが、今後使えなくなるクラスに該当しているので注意して下さい。

 

Top.cpp

 

#include "Top.h"


// 名前空間 #define USING_NS_CC using namespace cocos2d

USING_NS_CC;


Scene* Top::createScene()

{

    // 「シーン」は自動解放オブジェクトです

    auto scene = Scene::create();

    

    // 「レイアウト」は自動解放オブジェクトです

    auto layer = Top::create();

    

    // シーンに子としてレイヤーを追加

    scene->addChild(layer);

    

    // シーンを返す

    return scene;

 

}




// INIT」初期化

bool Top::init()

{

    if ( !Layer::init() )

    {

        return false;

    }

    

        //画面サイズを取得

        Size winSize = Director::getInstance()->getVisibleSize();

        

        // ラベルを作成し、初期化する。

        // Label::createWithSystemFont("文字列", "フォントの種類", 文字サイズ);

        auto label1 = Label::createWithSystemFont

                       ("Hello World""HiraKakuProN-W6"100);

    

        // ラベルの色:ホワイト

        label1->setColor(Color3B::WHITE);

        

        //画面の中央に表示

        label1->setPosition(Point(winSize.width/2, winSize.height/2));

    

        // Layerにラベルを追加

        this->addChild(label1);

    

    return true;

 

}


//テキストの水平位置を右寄せに
label1->setHorizontalAlignment(TextHAlignment::RIGHT);
 
//テキストの垂直位置を下寄せに
label1->setVerticalAlignment(TextVAlignment::BOTTOM);


フォント名
フォント名はこちらを参考にしてください。
Arial-BoldMT


GitHub Label_Cocos2d-x


ビルド&実行後の表示

  

目 次