ソースコードの基本を理解しよう (5/5)
作成:2015-05-23 09:17
更新:2015-05-23 09:26
更新:2015-05-23 09:26
■ラベルとスプライトの作成
initメソッドの処理の説明を続けましょう。
この後にあるのは「ラベル」を作る処理です。これはLabelというインスタンスを作ってシーンに組み込む処理になります。
ラベルの作成は、「createWithTTF」というメソッドを使います。これはTrueTypeフォントを指定してテキストを表示するLabelインスタンスを作成するためのものです。
インスタンス作成後、「setPosition」というものを使って表示位置を設定します。これは、Vec2という構造体の値として用意します。そして最後にaddChildでSceneにLabelを組み込みます。
最後にあるのが、「スプライト」を作る処理です。スプライトは、ゲームで利用するキャラクタなどで利用するもので、これでサンプルで用意されているイメージを表示しています。やはり、createでインスタンスを作成し、setPositionで表示位置を設定して、addChildでSceneに組み込んでいます。
――このように、シーンに表示されるものは、「createでインスタンス作成」「setPositionで位置を設定」「addChildでSceneに組み込み」という流れで作業をします。細かい部分は考えず、この3つのメソッドの流れについて、まずはしっかりと理解しておきましょう。
この後にあるのは「ラベル」を作る処理です。これはLabelというインスタンスを作ってシーンに組み込む処理になります。
ラベルの作成は、「createWithTTF」というメソッドを使います。これはTrueTypeフォントを指定してテキストを表示するLabelインスタンスを作成するためのものです。
インスタンス作成後、「setPosition」というものを使って表示位置を設定します。これは、Vec2という構造体の値として用意します。そして最後にaddChildでSceneにLabelを組み込みます。
auto label = Label::createWithTTF("Hello World", "fonts/Marker Felt.ttf", 24);ちょっと、setPositionの引数が難しげですが、これは「画面の上部中央に表示されるように、originやvisibleSizeの値を使って計算してるんだ」と考えて下さい。
label->setPosition(Vec2(origin.x + visibleSize.width/2,
origin.y + visibleSize.height - label->getContentSize().height));
this->addChild(label, 1);
最後にあるのが、「スプライト」を作る処理です。スプライトは、ゲームで利用するキャラクタなどで利用するもので、これでサンプルで用意されているイメージを表示しています。やはり、createでインスタンスを作成し、setPositionで表示位置を設定して、addChildでSceneに組み込んでいます。
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で位置を設定」「addChildでSceneに組み込み」という流れで作業をします。細かい部分は考えず、この3つのメソッドの流れについて、まずはしっかりと理解しておきましょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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ゲームプログラミング入門」に戻る