最近在游戏里面需要使用Text,所以就顺便研究了下。
Text的创建:
可以参考AndEngineExamples工程中的TextExample类。
更改Text的字体的大小,发现没有诸如setSize这样的方法可以用,唯一能做的就是在FontFactory.create这个里面进行设置。具体可以参考源文件中的FontFactory类,包括字体的粗体,什么字体,以及字体颜色等。
更改字体的颜色:
这个有点让人人摸不着头脑,发现有setColor这样的方法,但是如果预设的字体颜色是黑色的话,文字的颜色无法更改。
this.mFont = FontFactory.create(this.getFontManager(), this.getTextureManager(), 256, 256, Typeface.create(Typeface.DEFAULT, Typeface.BOLD), 25, true, Color.BLACK);
最后在AngEngine Foruns中找到了答案,建议将初始字体的颜色设置为白色就可以的,后来验证确实是这样的。顺便说下不少关于使用方面的问题可以直接在这个讨论组里面搜索。
http://www.andengine.org/forums/
setColor的方法的使用一开始也有点搞不清楚,对于固定的颜色的话,可以这样使用。
myText.setColor(Color.RED);
setColor(pRed, pGreen, pBlue);
setColor(153f,102f,0f);
但是你这样使用的话,你会发现得到的颜色不是自己定义的颜色,而且你如果搜索的话大部分的例子也都是那样写的。最后还是求助源文件,在Entity类中式这样描述的:
/**
* @param pRed from <code>0.0f</code> to <code>1.0f</code>
* @param pGreen from <code>0.0f</code> to <code>1.0f</code>
* @param pBlue from <code>0.0f</code> to <code>1.0f</code>
*/
@Override
public void setColor(final float pRed, final float pGreen, final float pBlue) {
if(this.mColor.setChecking(pRed, pGreen, pBlue)) { // TODO Is this check worth it?
this.onUpdateColor();
}
}
setColor(153f/255f,102f/255f,0f);
使用setText()当字串的长度超过一定的值时会出现:
java.lang.ArrayIndexOutOfBoundsException: length=30; index=30
解決方案:
public Text(final float pX, final float pY, final IFont pFont, final CharSequence pText, final int pCharactersMaximum, final VertexBufferObjectManager pVertexBufferObjectManager)
使用这个构造方法,进行初始化。
待续。