× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
RPGとかノベルゲームでよくある、1文字ずつ表示する仕組み。
◯cocos2d-xの内部 文字を表示するのはLabelクラス。 これはSpriteBatchNodeの一種で、1文字を1つのSpriteで保持している。 文字数分だけ、子ノードにSpriteを持っているという構造になっている。 で、◯文字めのSpriteを返す getLetter() というメソッドがある。これを使う。
という感じ。 ◯注意点 labelは使い回しできない。 一度runActionして1文字ずつ表示した後、 label->setString("another string"); して、再度runActionすると、文字の表示位置がずれまくり、そして落ちるという謎現象が起きた。 その場合、label->removeFromParent(); してから再度 Label::create() すれば正しく動いた。 ◯注意点その2 int textLength = label->getStringLength(); の文字数が合っていない。textLengthの文字数だけでwhileをまわすと、たまに末尾の1〜2文字が表示されないことがあった。 どうやらcocos2d-x内部での文字の数え方に差異があるようだ。 面倒なので、textLength + 2 でループをまわしたりした。 ちゃんと調べたい PR |
|