`

cacheAsBitmap使用经验谈 摘抄

    博客分类:
  • as
阅读更多

摘抄:http://www.5uflash.com/flashjiaocheng/Flashyingyongkaifa/5326.html

该用cacheAsBitmap的时候:

  1. 在一个复杂的矢量化背景图片上存在大量动画;
  2. 滚动文本区域;
  3. 基于窗口的应用(你经常会拖拽整块区域)
  4. 透明遮罩(必须强制使用,否则失效)

不应该用cacheAsBitmap的时候:

  1. 不要滥用,cacheAsBitamp十分消耗内存,一块250×250像素的矩形进行cache之后可能占掉250kb的内存!
  2. 目标元素缩放的时候不要使用。
  3. 目标元素本身最好是静态的,或者不要经常发生翻转、缩放这样的动画
  4. 不要把矢量图和cache的位图一起混用。

分享到:
评论
2 楼 leopard0825 2010-07-01  
何时启用缓存cacheAsBitmap

    DisplayObject 类的 opaqueBackground 属性和 scrollRect 属性与使用 cacheAsBitmap 属性的位图缓存有关。尽管这三个属性彼此互相独立,但当对象缓存为位图时, opaqueBackground 和 scrollRect 属性的作用最佳,只有将 cacheAsBitmap 设置为 true时,才能看到 opaqueBackground 和 scrollRect 属性带来的性能优势。
  对显示对象启用缓存可创建表面,表面具有助于更快地呈现复杂的矢量动画等优点。有几种情形需要启用缓存。可能您总是希望通过启用缓存来提高 SWF 文件的性能;但是,某些情况下启用缓存并不能提高性能,甚至还会降低性能。本部分介绍在哪些情况下应使用缓存,以及何时使用常规显示对象。缓存数据的总体性能取决于实例的矢量数据的复杂程度、要更改的数据量,以及是否设置了 opaqueBackground 属性。如果要更改的范围较小,则使用表面和使用矢量数据的差异微乎其微。在部署应用程序之前您可能需要实际测试一下这两种情况。
何时使用位图缓存
  在以下典型情形中启用位图缓存您可能会看到明显的好处。
    • 复杂背景图像:包含矢量数据的详细的复杂背景图像的应用程序(可能是应用了跟踪位图命令的图像,也可能是在 AdobeIllustrator® 中创建的插图)。您可能会在背景上设计动画人物,这会降低动画的速度,因为背景需要持续地重新生成矢量数据。要提高性能,可以将背景显示对象的 opaqueBackground 属性设置为 true。背景将呈现为位图,可以迅速地重新绘制,以便更快地播放动画。
    • 滚动文本字段:应用程序在滚动文本字段中显示大量的文本。可以将文本字段放置在您设置为可滚动的具有滚动框(使用scrollRect 属性)的显示对象中。这可以使指定的实例进行快速像素滚动。当用户滚动显示对象实例时, Flash Player 或AIR 会通过将滚动的像素向上移来生成新的看得见的区域,而不是重新生成整个文本字段。
    • 窗口排列秩序:应用程序具有秩序复杂的重叠窗口。每个窗口都可以打开或关闭(例如, Web 浏览器窗口)。如果将每个窗口标记为一个表面(将 cacheAsBitmap 属性设置为 true),则各个窗口将隔离开来进行缓存。用户可以拖动窗口使其互相重叠,每个窗口无需重新生成矢量内容。
    • Alpha 通道遮罩:当使用 Alpha 通道遮罩时,必须将 cacheAsBitmap 属性设置为 true。有关详细信息,请参阅第254 页的“ 遮罩显示对象”。所有这些情况下,启用位图缓存后都通过优化矢量图来提高应用程序的响应能力和互动性。此外,只要对显示对象应用滤镜, cacheAsBitmap 就会自动设置为 true,即使将其显式设置为 false 也是如此。如果清除了显示对象的所有滤镜,则 cacheAsBitmap 属性会返回最后设置的值。何时避免使用位图缓  存滥用此功能会给 SWF 文件带来负面影响。
  使用位图缓存时,请记住下面的准则:
    • 不要过度使用表面(启用了缓存的显示对象)。每个表面使用的内存都比常规显示对象多,这意味着只在需要提高呈现性能时才启用表面。缓存的位图使用的内存比常规显示对象多很多。例如,如果舞台上 Sprite 实例的大小为 250 x 250 个像素,缓存它可能会使用 250 KB 内存;如果它是常规(未缓存的) Sprite 实例,则使用 1 KB 内存。
    • 避免放大缓存的表面。如果过度使用位图缓存,尤其是在缩小内容时,将使用大量内存(请参阅上一段落)。
    • 将表面用于通常为静态(非动画)的显示对象实例。可以拖放或移动实例,但实例的内容不能为动画或更改太多。(动画或变化的内容更可能包含在包含动画的 MovieClip 实例或 Video 实例中。)例如,如果旋转或转换实例,实例将在表面和矢量数据之间进行变化,这种情况难于处理,并会对 SWF 文件产生负面影响。
    • 如果将表面与矢量数据混在一起,将增加 Flash Player 和 AIR(有时还包括计算机)的工作量。应尽量将表面归为一组 —例如,创建窗口应用程序时。
1 楼 leopard0825 2010-07-01  
http://www.cnblogs.com/sevenyuan/archive/2009/12/16/1625753.html

相关推荐

    flash优化技巧

    例如,在Windows系统下的IE浏览器中,虽然能够有效降低CPU使用率,但在Firefox下可能效果有限,且存在一定的内存使用问题。在Linux环境下,其表现与Windows相似,但整体上更依赖于系统的具体配置。 #### 其他优化...

    优化Flash性能 Optimizing Flash performance

    使用`cacheAsBitmap`属性可以缓存复杂的矢量图形,减少不必要的重绘。同时,利用位图遮罩(bitmap masking)代替矢量遮罩也能提高性能。 3. **代码优化**:编写高效的动作脚本代码至关重要。避免使用循环内的函数...

    flash as3.0代码优化

    - 对于 `TextField`,使用 `cacheAsBitmap` 并设置 `opaqueBackground` 参数,可以在提高性能的同时保持文本清晰度。 通过以上详细的分析和总结,我们可以看到,AS3.0代码优化涉及多方面的考量,包括内存管理、CPU...

    Flex4视频教程_03-03使用Image组件.rar

    - 渲染优化:Flex4提供了`cacheAsBitmap`和`cacheAsBitmapMatrix`属性,用于提高复杂布局中包含Image组件的性能。 - 自定义渲染:可以通过覆盖`updateDisplayList()`方法来自定义图像的渲染方式,实现如裁剪、旋转...

    Flex应用程序性能改善技巧

    使用`cacheAsBitmap`属性来实现。 4. **避免不必要的深度遍历**:当遍历组件树时,尽量限制遍历的深度,尤其是在事件处理或数据更新时。使用事件冒泡和事件代理可以减少遍历次数。 5. **使用Vector.** 对象:相比...

    flash制作和as编码优化技巧

    - 图形缓存:对于复杂或频繁改变的图形,可以使用`cacheAsBitmap`属性来提升性能。 - 位图遮罩优化:避免使用大量或复杂的位图遮罩,它们会消耗大量CPU资源。 3. **动画优化**: - 使用frame-based(基于帧)...

    as3 flash 天气预报

    7. 性能优化:避免不必要的重绘,使用位图缓存(cacheAsBitmap)提升图形渲染效率。同时,合理管理内存,及时释放不再使用的对象,防止内存泄漏。 8. 测试与调试:使用Flash的内置调试工具或外部IDE(如Flash ...

    Flex 有效的内存回收方法

    例如,使用BitmapData的cacheAsBitmap属性可以提高性能,但需注意它可能会增加内存占用。 总之,有效地进行内存管理是提升Flex应用性能的关键。通过理解垃圾收集、事件处理、显示列表管理以及利用各种工具和最佳...

    Flash AS3 工具性能输出窗口

    7. **代码优化**:常见的优化策略包括使用位运算代替浮点计算、避免不必要的对象创建、使用共享对象池、以及利用DisplayObject的cacheAsBitmap属性提高渲染效率。 8. **性能分析工具**:除了内置的性能输出窗口,...

    Actionscript3.0开发的射击小游戏

    - 使用DisplayObject的cacheAsBitmap属性进行渲染优化,提高帧率。 9. **调试与测试**: - 使用Flash的调试工具,如fdb或FlashDevelop的内置调试器,定位和修复代码问题。 - 进行多平台测试,确保游戏在不同环境...

    一个as3曲线图代码

    - 使用`cacheAsBitmap`属性:当图形绘制完成后,可以设置`cacheAsBitmap = true`,将图形转换为位图,提高渲染效率。 - 垂直和水平网格线:为了帮助用户更好地理解数据,可以添加辅助网格线。 9. **颜色和样式**...

    动态的Flash图片放大效果.rar

    7. **优化性能**: 对于大量的图片或复杂动画,开发者可能考虑了性能优化,如使用`cacheAsBitmap`属性来提高渲染速度,或者使用`dispose()`方法释放不再使用的资源。 8. **组件自定义**: Flash中的组件系统允许...

    flash颜色画板代码

    为了优化性能,可能需要在绘制过程中使用缓存策略,比如使用cacheAsBitmap属性。 6. **事件处理**:在Flash中,事件驱动编程是基础。通过监听鼠标事件,我们可以跟踪用户的绘画动作。例如,当鼠标按下时开始绘画,...

    as3自定义的键盘

    避免不必要的重绘,使用位图缓存(`cacheAsBitmap`)可以提高渲染效率。同时,合理管理内存,避免内存泄漏。 8. **触摸支持**:如果应用需要在触摸设备上运行,要确保键盘兼容触摸输入。AS3提供`TouchEvent`类来...

    flash image处理类库

    为了提高性能,可以使用`cacheAsBitmap`属性将显示对象缓存为位图。这样,即使对象内容发生变化,系统也只会更新位图,而不是重新渲染整个对象。 9. 多线程图像处理: 在Flash Player 11及以上版本,引入了...

    flash as3 仿苹果菜单

    可以使用MovieClip的cacheAsBitmap属性来缓存显示对象,提高渲染效率。 8. **测试与调试**:使用Flash的内置调试器或独立的AS3编译器(如FlashDevelop或IntelliJ IDEA)进行代码测试和调试。确保所有功能都能正常...

    Creating_ActionScript3_components_in_flash_source

    - 使用优化技巧:避免不必要的计算,利用缓存asBitmap或cacheAsBitmap提升性能。 - 调试组件:利用Flash的ActionScript编译器错误和警告,以及Debug版本的Flash Player进行调试。 七、发布与重用 一旦组件完成,...

    AS3.0地图制作,很好的资源

    例如,使用Sprite Batch或DisplayObjectContainer的cacheAsBitmap属性可以提高渲染效率。 10. **用户界面**:创建地图的同时,还需要设计交互式的UI,如缩放按钮、指南针、比例尺等,这需要用到AS3.0的UI组件和布局...

    AS3网站影片剪辑布局

    1. 使用`cacheAsBitmap`属性:将复杂的布局或图形缓存为位图,可以提高渲染速度。 2. 延迟加载:非首屏内容可以延迟加载,减少初始加载时间。 七、最佳实践 1. 避免在时间轴上过多使用ActionScript,尽可能将代码...

    flex 图片展示控件(放大镜效果)

    6. **优化性能**:为了提高性能,我们可能需要使用缓存机制,比如`cacheAsBitmap`属性,这可以减少频繁的像素操作。 7. **提供使用示例**:附带的`CustomControl`可能是这个自定义控件的实现文件,可以作为使用示例...

Global site tag (gtag.js) - Google Analytics