AndEngineのText機能を使っていて色々と気になったところがあったのでメモ
生成したTextでsetColorを行っても色の変更がうまく行かない
調べてみるとどうやらAndEngineのEntityのsetColorメソッド自体が描画したいテクスチャの色を変更するメソッドでは無く、
そのテクスチャの色をどのレベルまで表示させるかを各色0.0~1.0の範囲で指定するというものらしい
(そのテクスチャに対してsetColorで指定した色を乗算すると言ったほうがわかりやすいかも)
なのでsetColorでTextの色を変更させれるようにしたい時は
白い文字のFontを用意してそれでTextを生成すればいい
Textに対してFadeOutModifier等を使用すると、うまく動作してくれない場合がある
どうやらBlendFunctionの問題らしいので生成したテキストで
setBlendFunction( GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA );
を指定してあげればいいっぽい
教本でもある通りTextクラスのメソッドsetText("変更後の文字列");で変更できる
ただし生成した時の文字数より多くしてしまうとArrayIndexOutOfBoundsExceptionが発生してしまうので
後から内容を変更する可能性があるTextを生成するときは変更した後の文字でも入りきれるような文字数を指定しておくこと
Text自体にsetCharactersToDraw( int pCharactersToDraw )という引数で指定した数だけ文字を表示させるメソッドが用意されているのでそれを利用すればいい
ちなみに最大文字数はgetCharactersMaximum()で取得できる
http://uromuro.dou-jin.com/Entry/18/【AndEngine】Textについてメモ
[0回]
PR