AndEngine Text的使用心得

最近在游戏里面需要使用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);


这个如果没有看源文件的中的说明的话,会发现有问题,假设我的颜色是 (red: 153,green: 102,bule: 0),



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) 

使用这个构造方法,进行初始化。

待续。


你可能感兴趣的:(text,AndEngine,setColor)