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

如何高效的学习,这才是我们最值得去学习的。

 

关于文字的绘制以及特效,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秒钟之内文字从透明的变成不透明的。

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值