原来flash player对图片的解码不是异步的,AIR2.6后就异步了

用过 Loader 对象的人都知道,加载图片时,无论是使用 load() 方法还是 loadBytes() 方法,都是异步的。从开始加载到显示在舞台上这一过程,分别有两个动作:图片加载和图片解码。我一直都以为,从加载到解码完毕都是异步进行。但看了这篇文章后(http://www.bytearray.org/?p=2931),我才知道,只有加载的动作是异步的,加载完毕后的图片解码是同步的。即:加载动作是另开线程处理的,但加载完毕后的解码操作是交给主线程处理的。那就是说,加载大图片的话,会很糟糕。
Adobe AIR 2.6 版本里新增了API:LoaderContext.imageDecodingPolicy 属性。用于指定图片的解码操作是同步的还是异步的,即:是在主线程里解码,还是另开线程解码。
添加这个功能后,实在让人叫好。但,我觉得还不够完美。图片加载完毕后,flash player 就自动对图片进行解码。如果把这两个过程分开,让开发者决定什么时候进行解码,那才让人连声叫好。为什么要这样做呢?因为:图片解码后更占用内存!有时候,我们只想把图片预加载进来,但并不会马上把图片展示出来。举个例子:一张 4KB 的图片,以二进制的形式加载到flash里,仅占用内存为 4KB 。但在解码后,可能占用了 10KB 的内存(这个跟图片压缩率有关)。为做到仅使用时才对图片进行解码的效果(这样能有效利用内存资源),目前的做法是先使用 URLLoader 把图片以二进制的形式加载进来,直到需要展示图片时,才用 Loader.loadBytes() 加载。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值