Andengine 学习笔记- 加载图片的方法
2013-08-27 07:27
225 查看
在Andengine的世界里,一切看到的对象都是Entity,而Entity需要由图片来装饰才是我们真正看到的东西。这里的图片在Andengine里就是Texture(通常翻译为纹理,不过LZ不太喜欢这个翻译,太生硬)。
这里总结一下将图片资源Load到内存成为Texture的几种情况。
1、 Load单个的图片
首先要生成一个Atlas(纹理地图), 这个地图可以容纳很多的sub-texture, LZ现在不是太理解这个东西存在的意义,不过我猜测是用来提高效率的。有了Atlas以后就可以将图片Load到Altas中,并且生成一个Texture的引用。
这里使用的是BitmapTextureAtlasTextureRegionFactory这个工厂类。 这个工厂类里有很多静态方法,可以让我们从res资源文件夹、asset文件夹、sd卡加载我们想要的图片。
2、 从已有的Texture中抽取
我们也会遇上这样的情况, 我们已经load了一张很大的图片包含了你想要的图片(类似于地图), 这时可以直接从当前的texture中根据坐标来抽取子texture。
这里的操作是通过TextureRegionFactory这个工厂类里的静态方法完成的。
3、 从压缩的图片中加载(pvr)
Anengine的扩展包里有一个PVRCCZTexture类,可以以流的形式将压缩图片加载入内存,之后的操作,就如同2中,只要直接从texture中抽取想要的图片就可以了。
4、 使用图片打包工具(texturepacker)
TexturePacker是一个很方便的图片打包工具,它可以将小图片放到一个大图里面,这样可以尽可能的减少图片所占用的体积。并且可以打成多种引擎所支持的格式,这里我们只看Andengine支持的格式。
使用TexurePacker打出来的文件分为三个部分,一个部分是图片源文件,这里可以是png格式,也可以是经压缩过的pvr.czz格式,事实上,格式不重要,只要源文件存在就行;第二个部分是一个xml配置文件,这个文件里会记录每个sub-texture的坐标,还有压缩格式等一些元信息,以便我们加载的时候使用;第三个部分是一个interface类,这里记录的是读取texture的时候需要用到的各个texure的id。
Java代码
![](http://ygydaiaq-gmail-com.iteye.com/images/icon_star.png)
final TexturePack spritesheetTexturePack = new TexturePackLoader(this.getTextureManager(), "gfx/spritesheets/").loadFromAsset(this.getAssets(), "texturepackerexample.xml");
spritesheetTexturePack.loadTexture();
this.mSpritesheetTexturePackTextureRegionLibrary = spritesheetTexturePack.getTexturePackTextureRegionLibrary();
加载过后,我们就可以用mSpritesheetTexturePackTextureRegionLibrary根据id来获取各个texture
这里总结一下将图片资源Load到内存成为Texture的几种情况。
1、 Load单个的图片
首先要生成一个Atlas(纹理地图), 这个地图可以容纳很多的sub-texture, LZ现在不是太理解这个东西存在的意义,不过我猜测是用来提高效率的。有了Atlas以后就可以将图片Load到Altas中,并且生成一个Texture的引用。
这里使用的是BitmapTextureAtlasTextureRegionFactory这个工厂类。 这个工厂类里有很多静态方法,可以让我们从res资源文件夹、asset文件夹、sd卡加载我们想要的图片。
2、 从已有的Texture中抽取
我们也会遇上这样的情况, 我们已经load了一张很大的图片包含了你想要的图片(类似于地图), 这时可以直接从当前的texture中根据坐标来抽取子texture。
这里的操作是通过TextureRegionFactory这个工厂类里的静态方法完成的。
3、 从压缩的图片中加载(pvr)
Anengine的扩展包里有一个PVRCCZTexture类,可以以流的形式将压缩图片加载入内存,之后的操作,就如同2中,只要直接从texture中抽取想要的图片就可以了。
4、 使用图片打包工具(texturepacker)
TexturePacker是一个很方便的图片打包工具,它可以将小图片放到一个大图里面,这样可以尽可能的减少图片所占用的体积。并且可以打成多种引擎所支持的格式,这里我们只看Andengine支持的格式。
使用TexurePacker打出来的文件分为三个部分,一个部分是图片源文件,这里可以是png格式,也可以是经压缩过的pvr.czz格式,事实上,格式不重要,只要源文件存在就行;第二个部分是一个xml配置文件,这个文件里会记录每个sub-texture的坐标,还有压缩格式等一些元信息,以便我们加载的时候使用;第三个部分是一个interface类,这里记录的是读取texture的时候需要用到的各个texure的id。
Java代码
![](http://ygydaiaq-gmail-com.iteye.com/images/icon_star.png)
final TexturePack spritesheetTexturePack = new TexturePackLoader(this.getTextureManager(), "gfx/spritesheets/").loadFromAsset(this.getAssets(), "texturepackerexample.xml");
spritesheetTexturePack.loadTexture();
this.mSpritesheetTexturePackTextureRegionLibrary = spritesheetTexturePack.getTexturePackTextureRegionLibrary();
加载过后,我们就可以用mSpritesheetTexturePackTextureRegionLibrary根据id来获取各个texture
相关文章推荐
- iOS学习笔记-- 加载图片选择imageNamed 方法还是 imageWithContentsOfFile
- iOS开发学习笔记之swift3.0几种加载网络图片的方法
- 安卓学习笔记---Android图片加载框架最全解析(一),Glide的基本用法
- 【R语言学习笔记】RGraphviz包的安装与加载方法
- cocos2d-x 菜鸟学习笔记三(图片预加载与进度条)
- Android异步加载学习笔记之三:用AsyncTask实现ListView中的图片数据加载
- (小笔记)Xutil中bitmapUtils加载默认图片的方法是
- cocos2d-x 菜鸟学习笔记三(图片预加载与进度条)
- 基础学习笔记之opencv(2):haartraining前将统一图片尺寸方法
- android图片的异步加载和双缓存学习笔记——DisplayImageOptions
- Android网络图片加载缓存处理库的使用---第三方库学习笔记(五)
- Android学习笔记(二)之异步加载图片
- SDL学习笔记二(图片的加载和显示)
- opencv学习笔记(1)--图片加载
- 图片缓存LruCache 高效加载图片 学习笔记 + 开源项目:DiskLruCache
- 游戏引擎AndEngine总结(九):三种加载图片资源的方法
- 图片的异步加载和双缓存学习笔记——ImageLoaderConfiguration
- Android菜鸟学习笔记(ImageLoader加载图片)
- Android中实现图片的异步加载学习笔记
- android图片的异步加载和双缓存学习笔记——DisplayImageOptions