libro
www.tuyano.com
初心者のためのCocos2d-xゲームプログラミング入門

ソースコードの基本を理解しよう (5/5)

作成:2015-05-23 09:17
更新:2015-05-23 09:26

■ラベルとスプライトの作成

initメソッドの処理の説明を続けましょう。

この後にあるのは「ラベル」を作る処理です。これはLabelというインスタンスを作ってシーンに組み込む処理になります。

ラベルの作成は、「createWithTTF」というメソッドを使います。これはTrueTypeフォントを指定してテキストを表示するLabelインスタンスを作成するためのものです。

インスタンス作成後、「setPosition」というものを使って表示位置を設定します。これは、Vec2という構造体の値として用意します。そして最後にaddChildSceneLabelを組み込みます。
auto label = Label::createWithTTF("Hello World", "fonts/Marker Felt.ttf", 24);
label->setPosition(Vec2(origin.x + visibleSize.width/2,
       origin.y + visibleSize.height - label->getContentSize().height));
this->addChild(label, 1);
ちょっと、setPositionの引数が難しげですが、これは「画面の上部中央に表示されるように、originvisibleSizeの値を使って計算してるんだ」と考えて下さい。

最後にあるのが、「スプライト」を作る処理です。スプライトは、ゲームで利用するキャラクタなどで利用するもので、これでサンプルで用意されているイメージを表示しています。やはり、createでインスタンスを作成し、setPositionで表示位置を設定して、addChildSceneに組み込んでいます。
auto sprite = Sprite::create("HelloWorld.png");
sprite->setPosition(Vec2(visibleSize.width/2 + origin.x,
    visibleSize.height/2 + origin.y));
this->addChild(sprite, 0);

――このように、シーンに表示されるものは、「createでインスタンス作成」「setPositionで位置を設定」「addChildSceneに組み込み」という流れで作業をします。細かい部分は考えず、この3つのメソッドの流れについて、まずはしっかりと理解しておきましょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※initメソッド抜粋

bool HelloWorld::init()
{
    if ( !Layer::init() )
    {
        return false;
    }
    
    Size visibleSize = Director::getInstance()->getVisibleSize();
    Vec2 origin = Director::getInstance()->getVisibleOrigin();
    auto closeItem = MenuItemImage::create(
                                           "CloseNormal.png",
                                           "CloseSelected.png",
                                           CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));
    closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2 ,
                                origin.y + closeItem->getContentSize().height/2));
    auto menu = Menu::create(closeItem, NULL);
    menu->setPosition(Vec2::ZERO);
    this->addChild(menu, 1);

    auto label = Label::createWithTTF("Hello World", "fonts/Marker Felt.ttf", 24);
    label->setPosition(Vec2(origin.x + visibleSize.width/2,
                            origin.y + visibleSize.height - label->getContentSize().height));
    this->addChild(label, 1);
    auto sprite = Sprite::create("HelloWorld.png");
    sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
    this->addChild(sprite, 0);
    
    return true;
}
※関連コンテンツ

「初心者のためのCocos2d-xゲームプログラミング入門」に戻る