矢量图,是靠 cpu运算出来的。而位图记录的颜色信息都保存在了内存中。把矢量图缓存成位图,以减轻cpu的运算压力。

cacheAsBitmap 属性

cacheAsBitmap:Boolean  [读写]

语言版本:  ActionScript 3.0
运行时版本:  AIR 1.0, Flash Player 9

如果设置为 true,则 Flash Player 将缓存显示对象的内部位图表示形式。此缓存可以提高包含复杂矢量内容的显示对象的性能。

具有已缓存位图的显示对象的所有矢量数据都将被绘制到位图而不是主显示。 然后,将位图作为贴紧到最接近像素边界的未拉伸、未旋转的像素复制到主显示。 像素按一对一与父对象进行映射。 如果位图的边界发生更改,则将重新创建位图而不会拉伸它。

除非将 cacheAsBitmap 属性设置为 true,否则不会创建内部位图。

将 cacheAsBitmap 属性设置为 true 后,呈现并不更改,但是,显示对象将自动执行像素贴紧。 动画速度可能会大大加快,具体取决于矢量内容的复杂性。

只要对显示对象(当其 filter 数组不为空时)应用滤镜,cacheAsBitmap 属性就自动设置为 true,而且如果对显示对象应用了滤镜,即使将该属性设置为 false,也会将该显示对象的 cacheAsBitmap 报告为 true。 如果清除显示对象的所有滤镜,则 cacheAsBitmap 设置将更改为它上次的设置。

在下面的情况下,即使将 cacheAsBitmap 属性设置为 true,显示对象也不使用位图,而是从矢量数据呈现:

位图过大:在任一方向上大于 2880 像素。
位图无法分配(内存不足错误)。
最好将 cacheAsBitmap 属性与主要具有静态内容且不频繁缩放和旋转的影片剪辑一起使用。 对于这样的影片剪辑,在转换影片剪辑时(更改其 x 和 y 位置时),cacheAsBitmap 可以提高性能。

=================================================================================

例程说明:

/**
     * 为包含复杂的矢量图形(例如文本或渐变)的动画对象打开位图缓存可提高性能。但是,如果在显示对象(如播放其时间轴的
    影片剪辑)中启用了位图缓存,您将获得相反的效果。在各个帧上, Flash Player 必须更新缓存的位图,然后在屏幕上重绘该
    位图,这一过程要求许多 CPU 周期。仅当缓存的位图可以一次生成,且随后无需更新即可使用时,才适合使用位图缓存功能。
          为 Sprite 对象打开位图缓存后,移动该对象不会使 Flash Player 重新生成缓存的位图。更改对象的 x 和 y 属性不会导致重新生
    成。然而,任何试图旋转、缩放对象或更改其 alpha 值的行为都将导致 Flash Player 重新生成缓存的位图,从而降低性能。
    注: AIR 或 Packager for iPhone Preview 中提供的 DisplayObject.cacheAsBitmapMatrix 属性没有此限制。通过使用
    cacheAsBitmapMatrix 属性,可以在不重新生成任何位图的情况下旋转或缩放对象。此属性可确保使用 GPU 在屏幕上呈现位
    图,从而提供性能改进。
        缓存位图占用的内存大于常规影片剪辑实例。例如,如果舞台上的影片剪辑为 250 x 250 像素,缓存它可能会使用 250 KB 内
    存,而未缓存它只需 1 KB。
     * 1.对于只改变x,y时 没有缓存fps=12左右;慢慢增高应该是因为有些mc跑到stage外面了
     * 2.对于只改变x,y时 有缓存fps=30左右
     * 3.对于只改变scaleX,sacleY时 无缓存fps=10,慢慢降低
       4.对于只改变scaleX,sacleY时 有缓存fps=3左右
     */

例子:

cacheasbitmap的实例影响.rar

转载于:https://www.cnblogs.com/wonderKK/archive/2013/02/01/2888895.html

(转)flash位图缓存cacheAsBitmap相关推荐

  1. Canvas动画 位图缓存提高效率和对应的内存问题

    对一个矢量图动画,开启位图缓存能大大提高运行效率.所谓开启位图缓存,其实要自己动手,先创建一个临时canvas,然后把矢量图绘制到这个canvas上,到了实际绘制时,直接把这个临时canvas拷贝到真 ...

  2. linux清除位图缓存,ElasticSearch的缓存清除策略

    前面提及了字段过滤缓存,那么与之相反的清楚缓存策略 单一索引缓存,多索引缓存和全部缓存的清理 1.清空全部缓存 curl localhost:9200/_cache/clear?pretty { &q ...

  3. flash 位图缓冲

    位图缓冲(Bitmap Caching) 一个Flash动画是如何播放的?其实播放,就是Flash Player把源文件内能看到的一帧一帧的画面绘制出来,当然绘制前需要处理每一帧内的代码 Flash播 ...

  4. Android官方开发文档Training系列课程中文版:高效显示位图之位图缓存

    原文地址:http://android.xsoftlab.net/training/displaying-bitmaps/cache-bitmap.html 往UI界面中加载单张图片的过程是很简单的, ...

  5. flash遨游缓存问题

    来源:http://leftice.iteye.com/blog/806605 Flash需要和JS交互,但是在ie外壳浏览器下,有时候缓存会导致页面刷新后flash无法工作. 会报出Security ...

  6. Flash位图锯齿的处理办法

    实际应用中,经常会遇到,需要将一个位图进行缩放显示的情况,在不进行处理的情况下,位图的缩放处理会导致显示出的图片有比较明显的锯齿产生. 不能像矢量图一样运动平滑.而解决这个问题,只要一个小设置就好多了 ...

  7. flash位图技术研究篇(8):扫描像素点

    今晚抽了点时间写个无聊的野,这部分会涉及到位图方面的扫描操作.最近发现了通过扫描位图的像素能够做出很多意想不到效果. 基本原理:通过扫描像素点,并将我们所需要的像素点记录下来,我们可以以粒子的方式看待 ...

  8. flash位图技术研究篇 9 2D平面映射球体

    原文:http://www.codeproject.com/KB/graphics/Sphere_mapping.aspx?msg=2178656 昨晚在codeproject 里面无意当中看了一篇关 ...

  9. flash位图技术研究篇(9):2D平面映射球体

    原文:http://www.codeproject.com/KB/graphics/Sphere_mapping.aspx?msg=2178656 昨晚在codeproject 里面无意当中看了一篇关 ...

最新文章

  1. 《iOS 8开发指南(第2版)》——第1章,第1.3节工欲善其事,必先利其器——搭建开发环境...
  2. android双击返回键退出程序的实现
  3. ALSA声卡12_从零编写之添加音量控制_学习笔记
  4. Response.IsClientConnected
  5. Qt实现桌面右下角放置窗体
  6. fonts.conf
  7. 机器学习实现计算不规则图形面积_《图形编程技术学习》(五十八)用VS实现逐顶点的光照计算...
  8. vmware10中开启Intel VT-x
  9. 通俗了解神经网络如何避免陷入局部最优
  10. linux去除文件中重复行,2.25 uniq(检查及删除文本文件中重复出现的行列)
  11. 编译java源文件(在cmd下编译)傻瓜式教学
  12. 360随身wifi3代linux驱动下载,360随身wifi3驱动
  13. 萌言萌语|测试工作日报及总结
  14. Python轻松实现地图可视化(附详细源码)
  15. html autocomplete 多个参数切换
  16. 来自帅气博主的c语言文案
  17. Android隐藏和显示输入法
  18. 生活中的法则II(转载)
  19. 【每日早报】2019/08/12
  20. 画图解释FHSS、DSSS扩频原理以及计算规则

热门文章

  1. golang中的base64
  2. golang修改结构体中的切片值
  3. 将同一列的值用逗号分隔连接成一个字符串
  4. SpringBoot------异步任务的使用
  5. 4.3. postForObject
  6. MySQL数据库从windows迁移到linux
  7. ubuntu下网页显示乱码的解决方法
  8. 「android」查看应用占用cpu和内存消耗情况
  9. Django REST framework的各种技巧——1.基础讲解
  10. 一些小标签(上标下标下划线等)