とあるプログラマの備忘録

都内某所に住むプログラマが自分用に備忘録を残すという趣旨のブログです。はてなダイアリーから移動しました!

Cocos2dx LabelTTFのスクロール表示とか左寄せとかあれこれ

なんかよくわからないタイトルになりましたすいません。

とりあえずこんな文言をなんとか表示させたいのです。

日本の地獄は自慢の地獄
罪にあわせておもてなし
(はい!)
日本の地獄はじゅうろくしょう地獄!
全部合わせて、にひゃくななじゅうにもあるーーーーーー!!
ここは地獄!地獄!素敵な地獄!
地獄、じご、じご、じごくだよ~!!
ここは地獄!地獄!楽しい地獄!
地獄、じご、じご、じごくだよ~!!
等活(とうかつ)黒縄(こくじょう)衆合(しゅうごう)
叫喚(きょうかん)
大叫喚(だいきょうかん)
焦熱(しょうねつ)に 大焦熱(だいしょうねつ) 阿鼻!!
不喜処(ふきしょ)(に)瓮熟処(おうじゅくしょ)、
如飛虫堕処(にょひちゅうだしょ)
受苦無有数量処(じゅくむうすうりょうしょ)
屎泥処(しでいしょ)(に)、刀輪処(とうりんしょ)
多苦処(たくしょ)(に)闇冥処(あんみゅうしょ)(に)極苦処(ごくくしょ)
頞部陀(あぶだ)、刺部陀(にらぶだ)
頞听陀(あただ)、臛臛婆(かかば)、虎虎婆(ここば)
嗢鉢羅(うばら)、(に)、鉢特摩(はどま)(に)摩訶鉢特摩(まかはどま)
衆病処(しゅうびょうしょ)、(ったら) 雨鉄処(うてつしょ)、(ったら)
悪杖処(あくじょうしょ)、黒色鼠狼処(こくしょくそうろうしょ)、
針山、血の池、まだまだ色々!
地獄はあるかもしれないよ!!
この世の行い気をつけてー!
ここは地獄!地獄!素敵な地獄!
地獄、じご、じご、じごくだよ~!!
ここは地獄!地獄!楽しい地獄!
地獄、じご、じご、じご、じご、じご、
じご、じご、じご、じご、じご、じごくだよ~!!
嗚呼~

鬼灯の冷徹なのはただの趣味です、気にしないでください。

とりあえず適当に表示させて見る

    auto string_txt = "日本の地獄は自慢の地獄\n罪にあわせておもてなし\n(はい!)\n日本の地獄はじゅうろくしょう地獄!\n全部合わせて、にひゃくななじゅうにもあるーーーーーー!!\n\nここは地獄!地獄!素敵な地獄!\n地獄、じご、じご、じごくだよ~!!\n\nここは地獄!地獄!楽しい地獄!\n地獄、じご、じご、じごくだよ~!!\n\n等活(とうかつ)黒縄(こくじょう)衆合(しゅうごう)\n叫喚(きょうかん)\n大叫喚(だいきょうかん)\n焦熱(しょうねつ)に 大焦熱(だいしょうねつ) 阿鼻!!\n不喜処(ふきしょ)(に)瓮熟処(おうじゅくしょ)、\n如飛虫堕処(にょひちゅうだしょ)\n受苦無有数量処(じゅくむうすうりょうしょ)\n屎泥処(しでいしょ)(に)、刀輪処(とうりんしょ)\n多苦処(たくしょ)(に)闇冥処(あんみゅうしょ)(に)極苦処(ごくくしょ)\n\n頞部陀(あぶだ)、刺部陀(にらぶだ)\n頞听陀(あただ)、臛臛婆(かかば)、虎虎婆(ここば)\n嗢鉢羅(うばら)、(に)、鉢特摩(はどま)(に)摩訶鉢特摩(まかはどま)\n\n衆病処(しゅうびょうしょ)、(ったら) 雨鉄処(うてつしょ)、(ったら)\n悪杖処(あくじょうしょ)、黒色鼠狼処(こくしょくそうろうしょ)、\n針山、血の池、まだまだ色々!\n\n地獄はあるかもしれないよ!!\nこの世の行い気をつけてー!\n\nここは地獄!地獄!素敵な地獄!\n地獄、じご、じご、じごくだよ~!!\n\nここは地獄!地獄!楽しい地獄!\n地獄、じご、じご、じご、じご、じご、\nじご、じご、じご、じご、じご、じごくだよ~!!\n\n嗚呼~ \n";

    auto label = LabelTTF::create(string_txt, "Arial Rounded MT Bold", 15);
    addChild(label);

f:id:raharu0425:20140512195915p:plain

まぁそりゃそうです

スクロールさせる

    //Scrollview
    auto *scroll = ScrollView::create(window_size);
    scroll->setDirection(ScrollView::Direction::VERTICAL);
    addChild(scroll);

    //Label
    auto label = LabelTTF::create(string_txt, "Arial Rounded MT Bold", 15);
    scroll->setContainer(label);

scroll->setDirection(ScrollView::Direction::VERTICAL);
縦方向だけにスクロールさせてみます。

画面の大きさに合わせて自動改行

    //Scrollview
    auto *scroll = ScrollView::create(window_size);
    scroll->setDirection(ScrollView::Direction::VERTICAL);
    addChild(scroll);

    //Label
    auto label = LabelTTF::create(string_txt, "Arial Rounded MT Bold", 15);

    label->setDimensions(Size(window_size.width,0));
    label->setDimensions(Size(label->getContentSize().width, label->getContentSize().height));
    scroll->setContainer(label);

f:id:raharu0425:20140512201227p:plain

左寄せにする

    //Scrollview
    auto *scroll = ScrollView::create(window_size);
    scroll->setDirection(ScrollView::Direction::VERTICAL);
    addChild(scroll);

    //Label
    auto label = LabelTTF::create(string_txt, "Arial Rounded MT Bold", 15);

    label->setDimensions(Size(window_size.width,0));
    label->setDimensions(Size(label->getContentSize().width, label->getContentSize().height));
    label->setHorizontalAlignment(TextHAlignment::LEFT);
    scroll->setContainer(label);

f:id:raharu0425:20140512201458p:plain

文字の開始位置を画面の上に合わせる

現在のアンカーポイントが0,0左下にセットされている訳です。
大きいサイズの文字データの一番左上から表示させたいので、
widthは0
heightはコンテンツサイズから画面縦を引いた負数になります

    //Scrollview
    auto *scroll = ScrollView::create(window_size);
    scroll->setDirection(ScrollView::Direction::VERTICAL);
    addChild(scroll);

    //Label
    auto label = LabelTTF::create(string_txt, "Arial Rounded MT Bold", 15);

    label->setDimensions(Size(window_size.width,0));
    label->setDimensions(Size(label->getContentSize().width, label->getContentSize().height));
    label->setHorizontalAlignment(TextHAlignment::LEFT);

    scroll->setContainer(label);
    scroll->setContentOffset(Point(0, 0 - (label->getContentSize().height - window_size.height)));

f:id:raharu0425:20140512202444p:plain

これで思い通りになりました。
スクロールコンテンツのサイズはsetContainerSizeでセット出来ます。