【cocos2dx入門】文字を表示するLabelクラスの使い方

バージョンが3.xになり、今まで文字を表示する時に利用してきた[CCLabelTTF(LabelTTF)]クラスが使えなくなり、新しく[Label]クラスを利用するようになりました。 今回は、このLabelクラスの紹介をブログで紹介をしていきたいと思います。

Labelクラスを使ってみる

使い方はLabelTTFのようにとても簡単に利用ができます。 [c] //テキスト,フォント名,フォントサイズを指定します。 auto text = Label::createWithSystemFont("Text テキスト (比較用)", "HiraKakuProN-W6", 32); text->setPosition(Point(winSize.width/2,winSize.height/6)); text->setColor(Color3B::WHITE); this->addChild(text);

[/c]

Labelの装飾を行う

Labelクラスは、文字の総称が簡単にできます。 これを使えば、以前はフォントを用意していた所を省くことができます。

シャドウ

文字にシャドウ(影)を入れることができます。 enableShadow()メソッドを利用。 [c] // enableShadow(影の色,サイズ,大きさ);

//具体例 auto text = Label::createWithSystemFont("Text テキスト (シャドウ)", "HiraKakuProN-W6", 32); text->setPosition(Point(winSize.width/2,winSize.height/3*2)); text->setColor(Color3B::WHITE); text->enableShadow(Color4B::RED,Size(-2,-4),2); this->addChild(text);

[/c]

アウトライン

文字の周りにアウトライン(外周)を設定できます。

[c] auto text2 = Label::createWithSystemFont("Text2 テキスト2 (アウトライン)", "HiraKakuProN-W6", 32); text2->setPosition(Point(winSize.width/2,winSize.height/2)); text2->setColor(Color3B::WHITE); text2->enableOutline(Color4B::BLACK,5); // 色と大きさを指定します。 this->addChild(text2); [/c]

2014 6 7 fdsas

TTFConfigでフォントと文字サイズを管理するLabelクラスでできないこと

TTFConfigに「フォント名」や「文字の大きさ」を登録すると、Labelが簡単に作成できます。 TTFConfigには、「フォント」を用意する必要があります。 デフォルトで[Resources]フォルダに1つあるので、例としてこれを利用します。 [c]

TTFConfig ttfConfig("fonts/Marker Felt.ttf", 48, GlyphCollection::DYNAMIC);

auto label = Label::createWithTTF(ttfConfig, "hogehoge"); label->setPosition(Point(winSize.width/2,winSize.height/2)); addChild(_label);

[/c]

これで、Labelクラスを利用する際に、いちいち「フォント名」「文字サイズ」を設定しなくても良くなります。

エフェクト

TTFConfigを利用すると「光彩(外側)」のようなエフェクトを文字にかけることができます。 [c]

TTFConfig ttfConfigEffect(ttfConfig); ttfConfigEffect.distanceFieldEnabled = true; //trueにする auto label = Label::createWithTTF(ttfConfigEffect, "TTFConfig Label Effect"); label->setPosition(Point(winSize.width/2,winSize.height/9)); label->enableGlow(Color4B::RED); //色を設定 this->addChild(label);

[/c]

2014-6-7-fdfsas

【追記 下記問題は解決いたしました】 原因は、fontsをプロジェクトに追加する時に「階層を有効にせずに、そのまま追加していた」からです。 フォントのデータが読み込みができなかったのが問題点でした。

2014-6-6-gfdsds

フォントデータの保存場所には注意しましょう。

【追記前】 ただ、私が何回やってもインスタンスが作成できずにエラーになります。

2014-6-7-fdsasa

【参考】 Cocos2d-x3.0rc2でのLabelの使い方(TTF) - Qiita Defect on Label fonts | Cocos2d-x