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
ビルド&実行後の表示
コメントをお書きください