您的位置:首页 > 移动开发 > Android开发

android游戏引擎andengine学习系列四:绘制特效的动画文字

2012-02-15 15:42 281 查看
如何高效的学习,这才是我们最值得去学习的。

关于文字的绘制以及特效,andengine demo中给出了5种文字绘制例子,在此,我提炼出其中的三种,自己写了一个小demo,当明白这个后,剩下的就都会明白了。

先上效果图:









该demo中定义了三种字体,第一种就是最上面那个为默认的黑体;第二中为自定义的一种字体,字体样式可以下载;第三种是为普通的字体描边。

在这里还是先了一些特效,从透明到不透明,然后再旋转。关于这些字体和特效的控制请看如下代码:

整体代码结构和以前一样,这里我只给出关键性的代码:

onLoadResources()方法:

public void onLoadResources() {
this.mFontTexture = new Texture(256, 256, TextureOptions.BILINEAR_PREMULTIPLYALPHA);
this.mDroidFontTexture = new Texture(256, 256, TextureOptions.BILINEAR_PREMULTIPLYALPHA);
this.mStrokeFontTexture = new Texture(256, 256, TextureOptions.BILINEAR_PREMULTIPLYALPHA);
//定义默认字体,其中的参数:第一个为上面定义的纹理,第二个为字体样式,第三个为字体大小,第四个为是否消锯齿,第五个为颜色
this.mFont = new Font(this.mFontTexture, Typeface.create(Typeface.DEFAULT, Typeface.BOLD), 32, true, Color.BLACK);
fontList.add(this.mFont);

//自定义的字体,其中的参数:第一个为上面定义的纹理,第二个为本context,第三个为字体的路径,第四个为字体的大小,第五个为是否消锯齿,第六个为颜色
this.iFont = FontFactory.createFromAsset(this.mDroidFontTexture, this, "Droid.ttf", 32, true, Color.BLACK);
fontList.add(this.iFont);		//备注1

//定义字体的描边,其中的参数:第一个参数为上面定义的纹理,第二个参数为字体样式,第三个参数为字体的大小,第四个参数为是否消锯齿,第五个参数为字体颜色,第六个参数为字体边的宽度,第七个参数为秒边的颜色
this.mStrokeFont = new StrokeFont(this.mStrokeFontTexture, Typeface.create(Typeface.DEFAULT, Typeface.BOLD), 32, true, Color.BLACK, 2, Color.WHITE);
fontList.add(this.mStrokeFont);

//加载三种纹理
this.mEngine.getTextureManager().loadTextures(this.mFontTexture,this.mDroidFontTexture,this.mStrokeFontTexture);
//加载三种字体
this.mEngine.getFontManager().loadFonts(this.mFont,this.iFont,this.mStrokeFont);
}


onLoadScene()方法:

public Scene onLoadScene() {
this.mEngine.registerUpdateHandler(new FPSLogger());

final Scene scene = new Scene(1);
scene.setBackground(new ColorBackground(0.09804f, 0.6274f, 0.8784f));

for (int i = 0; i < fontList.size(); i++) {
TickerText text = new TickerText(50, (i+1)*100, fontList.get(i),"大家好,这里是duancanmeng的博客!",HorizontalAlign.CENTER,5);
text.addShapeModifier(new SequenceShapeModifier(
new ParallelShapeModifier(
new AlphaModifier(10, 0.0f, 1.0f),
new ScaleModifier(10, 0.5f, 1.0f)
),
new RotationModifier(5, 0, 360)
));		//备注2
text.setBlendFunction(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);	//这里前面几篇都讲过
scene.getTopLayer().addEntity(text);
}

return scene;
}


备注1:该处的字体样式可以到http://download.csdn.net/detail/duancanmeng/4065568下载,里面提供了五种不同的效果,注意:字体样式文件放在assets的文件夹下。

备注2:关于TickerText构造方法中的参数,前面的都好理解,最后两个我解释一下:倒数第二个是表示字体是居中对齐,倒数第一个是表示一秒钟显示的字符的个数,也就是绘制文字的速度。可以看到特效是从代码text.addShapeModifier的时候加载进来的,SequenceShapeModifier是表示里面的所有动作按照先后顺序执行,ParallelShapeModifier表示里面的所有动作同时执行,而这些所有的Modifier中的参数,第一个是代表执行的时间,第二个是执行前的状态,第三个是执行后的状态。例如:new
AlphaModifier(10,0.0f,1.0f)代表10秒钟之内文字从透明的变成不透明的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐