在游戏中我们常常希望前面的贴图是透明或半透明的,不要挡住后面的东西。其实在JPCT-AE引擎中还是比较容易实现的,下面我将讲一下Overlay这个类。
首先呢,先说下如何做贴图,生成Overlay的对象,主要有以下几个步骤:
一、保存你的纹理文件也就是你想贴的图到你想存放的文件夹,这里值得注意的一点是你的纹理文件的宽和高最好(一般是一定)是2的N次方,否则极易出错,这也是很多载入文件错误的主要原因。
二、创建Texture对象,具体的方法请看这个:http://blog.csdn.net/wangziling100/article/details/7281519,这里就不在赘述了,个人感觉Texture对象就像是你的这个纹理文件,它存放了一些纹理文件的属性,具体如何操作还是查查Texture类中的属性和方法吧,其实这个并不难。
然后因为我们要实现透明的效果,所以呢首先要一个RGBA的概念,相信大家都懂的,也不废话了。在Texture里有一个方法叫做removeAlpha(),这个方法的功能并不是将Alpha值调成0,从而实现透明,而是删除纹理文件的Alpha信息,通俗的讲就是将纹理文件从RGBA变成了RGB了,实现的效果大概是本该全透明的地方变成了黑色半透明。我一般在不透明贴图中才使用这个方法,可以消除一些不必要的麻烦。
三、给Texture对象起一个名字,也就是将其注册到TextureManager类中
TextureManager.getInstance().addTexture(String filename, Texture tex_Result);
其中filename是起的名字,tex_Result是被起名的纹理。
TextureManager相当于一个管理器,管理者所有注册的问题,然后其他类对象使用该纹理时只要根据纹理的名字找到即可。这样比载入时速度快得多。而且可以跨多个Activity管理。
四、创建Overlay对象,相应的方法前文中有了,不说了,直接重点。想做透明效果,肯定要设置透明度的,里面有个方法叫setTransparency(int n),n是从0开始递增有效的,小于0为不透明,0为全透明(如果记得不错的话,这个可以自己试试),n愈大,越不透明,大概到10把,基本就不透明了,这个方法很简单,我记不太清楚了,大家试试就知道了。
然后有个方法叫做setDepth(int),就是设置深度,也0开始递增有效的,0代表直接把屏幕盖上,如果我们设置背景图的话可以给值大些,这样就在后面了,当两个Overlay对象都为0值时,一般是小的挡在大图前面。当然这个层次顺序调节起来还是挺容易的。
好了,有了以上这些工具做透明贴图也不算难事了吧。