ややプログラム紀行

博士2年のプログラムに関する日記

メリクリ

メリークリスマスです

最近更新全然してませんでしたがもち生きてます

このまま終わるのもあれなんで、新しく発見した小ネタみたいなのを一つ・・・

cocos2d-xの文字表示クラスにLabelっていうのがあるんですが、これで表示している文字の横幅を取得するにあたって意外な罠みたいなのがありました

とりまLabelクラスにgetWidthっていう関数があったので使ってみたところ、なんと0が返ってくるという

どうやらこのgetWidth関数は文字の横幅ではなく

auto label = cocos2d::Label("テスト", "Arial", 20, Size(100, 100), TextHAlignment::LEFT, TextVAlignment::CENTER);

こんな感じで作成時に文字を収める領域を設定できるんですが、その横幅がかえってくるようです

じゃあどうすれば良いかって言うと、getContentSize関数を使います

getContentSizeは領域の大きさではなく表示している文字の大きさが返ってくるようです

見た目こっちの方が領域の大きさが返ってきそうなのに・・・