用过 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() 加载。

转载 http://riaoo.com/?p=2132

// create a LoaderContext
var loaderContext:LoaderContext = new LoaderContext();
// specify async decoding
loaderContext.imageDecodingPolicy = ImageDecodingPolicy.ON_LOAD;
// create a Loader
var loader:Loader = new Loader();
// inform the Loader
loader.load( new URLRequest("http://dl.dropbox.com/u/7009356/IMG_1398.jpg"), loaderContext );

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

  1. 如何下载最新版的 Adobe Flash Player

    如何下载最新版的 Adobe Flash Player 中国访客用代理访问下面的链接,否则会自动跳转到 https://www.flash.cn/ 当我们从 https://get.adobe.com ...

  2. 借助 Adobe Scout 理解 Flash Player

    原文链接 Adobe Scout 用于优化 Flash 内容,是一款极为强大的工具,因为它能让您看到 Flash Player 幕后正在发生的事情.但是若明白 Flash Player 为什么做这些事 ...

  3. Understanding Flash Player with Adobe Scout

    Adobe Scout 是一款强大的Flash内存分析工具,可以观察到Flash Player后台正在运行的内容.从Adobe Scout上表现的内容,就可以知道Flash Player正在做什么.为 ...

  4. [翻译]Adobe Flash Player 11新特性

    Adobe Flash Player 11带来了很多改进,您将在网络上看到更多精彩的内容.就像当年Flash Player 7改变了网络视频,ActionScript 3改变了开发Flash内容的方式 ...

  5. ubuntu 13.10 64位安装及配置 google拼音输入法及Adobe flash player、mp3 插件安装、中文GBK编码等 -转

    以前一直在虚拟机下玩ubuntu,今天兴起,在硬盘上直接安装了ubuntu 13.10版本,安装时将电脑的一个盘清空,有68G,用于安装ubuntu,将下载来的系统镜像使用ultraiso制作启动盘, ...

  6. 【FLASH】报错“必要的系统组件未能正常运行,请修复Adobe Flash Player”及 error#2046

    问题描述:内网应用加载flash页面报错:"必要的系统组件未能正常运行,请修复Adobe Flash Player" 解决思路: 一.必要的系统组件未能正常运行,请修复Adobe ...

  7. Chrome浏览器显示“Adobe flash player已过期”问题之解决

    1 问题描述 最近办公室刚分给我一台新的台式电脑,于是我在其上的Win7系统上安装了我喜欢使用的chrome浏览器,版本为: 使用过程中发现一些网页的flash图片或者视频显示不出来,并且出现如下的提 ...

  8. Win10 新版Edge浏览器Flash Player不兼容,总是显示flash与地区不兼容(完美解决)

    微软已经推出 Microsoft Edge based Chromium 浏览器正式版并开始向 Windows 10 用户主动推送替代经典版.然而已经安装的用户应该发现该正式版在部分功能和稳定性还不如 ...

  9. centos 7 opera 安装flash player

    centos 7 opera 安装flash player 先来一张安装好了的图片: 1.到Adobe官网下载flash_player_ppapi_linux.x86_64.tar.gz点击打开链接 ...

最新文章

  1. 11月21日spring mvc的表单校验培训日记
  2. nginx配合modsecurity实现WAF功能
  3. [改善Java代码]减少HashMap中元素的数量
  4. Maven打包时报Failed to execute goal org.apache.maven.plugins:maven-war-plugin:解决方案
  5. lua __index __newindex upvalue 示例
  6. 山东大学 2020级数据库系统 实验三
  7. 微服务架构设计基础之领域驱动设计
  8. 没有足够的值_了解食物的GI值,让你的减脂效率翻倍
  9. ubantu下谷歌浏览器安装包
  10. 如何搭建谷歌离线地图服务
  11. ivms 4200 linux_iVMS-4200E 海康威视微服务器系列NVR 集成海康硬件和软件实现灵活的一站式解决方案_...
  12. MAML++:HOW TO TRAIN YOUR MAML论文精读
  13. STM32 GPIO模拟I2C的SHT20温湿度采样
  14. ps里面的css,PS图层样式详解(上)
  15. python程度员要学很多英语吗_为什么程序员应该学好英语?
  16. SSH/TSL 加密原理
  17. Fibonacci数列练习题
  18. 经济应用文写作【11】
  19. 三菱Plc怎么用c语言编程,如何用程序在三菱PLC上写出配方功能
  20. java定义两个动物抽象类 程序_java抽象类和接口详解

热门文章

  1. sql运算符_SQL LIKE运算符概述
  2. 如何在SQL Server中导入具有不同列数的平面文件
  3. python错误和调试
  4. HDU 5950 Recursive sequence(矩阵快速幂)
  5. Hash Table in C
  6. 30秒清除你电脑中的垃圾
  7. JPA多表查询映射自定义实体类(包含两个表字段)
  8. pandas知识点(汇总和计算描述统计)
  9. 51-表达式计算(带括号的)
  10. 关于在Android中访问和使用到上下文变量