|
AIR for ios的跨平台技术,其中一个最致命的弱点就是内存。手机内存太少了,一个稍微大点的游戏,内存就爆了。那么我们怎么去优化呢?内存的计算方式: 位图的宽x高x4 通过这个算法可以得到你这个图片占用的内存,而不是在外面看的空间大小。内存优化方法:一 内存的重复使用:bitmapdata的重用,因为每个bitmaodata在内存里都会有一份内存池。我们通过技术手段让一模一样的位图,都是用同一个内存池,这样就达到内存的重复使用。实现方法:同一个图片资源的对象 bitmap可以全部引用同一个bitmapdata,这样就能达到内存的重用。在badyooframework里都是由位图管理器http://www.badyoo.com/badyooframework/doc/badyoo/badYooFrameWork/subassembly/BitmapManager.html完成这些操作的。
二:二进制还原技术我们通过urlloader加载原位图的二进制文件,将期存放在数组里,等到要使用时,在通过 loader.loadByte进行还原。因为位图的二进制文件是占用很少内存,而且通过loadByte来还原速度很快。速度大约在20毫秒左右。这样能够用在一些静态图片上,当需要时直接还原。不需要时可以直接删除。
三:运用flash ide绑定类来实习内存优化。第二中方法都是要加载原始位图文件来实现的,如果遇到很多图片时,加载速度就会很慢。这样在用户体验上就非常差了。那么我们可以通过flash ide 库的类绑定来解决这个问题。像下图,每个要使用的位图都对应绑定为bitmapdata,然后在使用第一种方法重复使用,就能达到内存优化,但是通过这个方法绑定的bitmapdata会触发flash player 10.1以上的新特性。http://www.badyoo.com/index.php/2012/05/28/105/index.html
还有在flash builder里如果你想使用这些绑定好的类,那么只能使用swc库了。但是swc 库在flash builder里会出现一个问题。没有被引用的类,将不会编译进项目,这个情况相当糟糕,如果我们要用的是一些位图,总不能一个个的往代码里添加引用把。解决办法还是有的,在flash develop 跟flash builder 都有一个外部库绑定,但是这个方法在flash builder里不凑效,不知道为什么,在flash builder里设置成外部库完全没有用。
那么我们只能通过编译器参数来实现外部库的绑定了。如下图:我们在flash builder项目的编译器参数里加入命令:-include-libraries swc的路径 这样就实现了外部库绑定了。
本文来自:http://www.badyoo.com/87.html |