`

flash中cacheAsBitmap的使用

 
阅读更多

缓存显示对象 

如果 Flash 中的设计尺寸增大,无论创建的是应用程序还是复杂的脚本动画,都需要考虑性能和优化。如果内容保持为静态(如矩形 Shape 实例),Flash 不会优化内容。因此,更改矩形的位置时,Flash 将重绘整个 Shape 实例。可以通过缓存指定的显示对象来提高 SWF 文件的性能。显示对象是一个“表面”,实际上是位图版本的实例矢量数据,矢量数据是 SWF 文件中不需要有太多更改的一种数据。因此,打开缓存的实例不会随 SWF 文件的播放而不断地重绘,这样便可快速呈现 SWF 文件。 

注意 
可以更新矢量数据,这时将重新创建表面。因此,缓存在表面中的矢量数据不需要在整个 SWF 文件中保持一样。 

将显示对象的 cacheAsBitmap 属性设置为 true 会使显示对象缓存其自身的位图表示。 Flash 为该实例创建一个 surface 对象,该对象是一个缓存的位图,而不是矢量数据。如果要更改显示对象的边界,则重新创建表面而不是调整其大小。表面可以嵌套在其它表面之内。子表面会将其位图复制到它的父表面上。有关详细信息,请参阅第351页的“启用位 
图缓存”。DisplayObject 类的 opaqueBackground 属性和 scrollRect 属性与使用 cacheAsBitmap属性的位图缓存有关。尽管这三个属性彼此互相独立,但是,当对象缓存为位图时, 
opaqueBackground 和 scrollRect 属性的作用最佳,只有将 cacheAsBitmap 设置为 true时,才能看到 opaqueBackground 和 scrollRect 属性带来的性能优势。有关滚动显示对象 
内容的详细信息,请参阅第345页的“平移和滚动显示对象”。有关设置不透明背景的详细信息,请参阅第351页的“设置不透明背景颜色”。 
有关 Alpha 通道遮罩(要求将 cacheAsBitmap 属性设置为 true)的信息,请参阅第357页的“Alpha 通道遮罩”。 

何时启用缓存 
对显示对象启用缓存可创建表面,表面具有助于更快地呈现复杂的矢量动画等优点。有几种情形需要启用缓存。可能您总是希望通过启用缓存来提高 SWF 文件的性能;但是,某些情况下启用缓存并不能提高性能,甚至还会降低性能。本部分介绍在哪些情况下应使用缓存,以及何时使用常规显示对象。 

缓存数据的总体性能取决于实例矢量数据的复杂程度、要更改的数据量,以及是否设置了opaqueBackground 属性。如果要更改的区域较小,则使用表面和使用矢量数据的差异微乎其微。在部署应用程序之前您可能需要实际测试一下这两种情况。 

何时使用位图缓存 
在以下典型情况下,启用位图缓存可能会带来明显的好处。 
■复杂的背景图像:应用程序包含由矢量数据组成的细节丰富且背景复杂的图像(可能是应用了跟踪位图命令的图像,也可能是在 Adobe Illustrator(R) 中创建的图片)。您可能会在背景上设计动画人物,这会降低动画的速度,因为背景需要持续地重新生成矢量数据。要提高性能,可以将背景显示对象的 opaqueBackground 属性设置为 true。背景将呈现为位图,可以迅速地重绘,所以动画的播放速度比较快。 
■滚动文本字段:应用程序在滚动文本字段中显示大量的文本。可以将文本字段放置在您设置为可滚动的具有滚动框(使用 scrollRect 属性)的显示对象中。这可以使指定的实例进行快速像素滚动。当用户滚动显示对象实例时,Flash 通过将滚动的像素向上移来生成新的看得见的区域,而不是重新生成整个文本字段。 
■窗口排列秩序:应用程序具有秩序复杂的重叠窗口。每个窗口都可以打开或关闭(例如,Web 浏览器窗口)。如果将每个窗口标记为一个表面(将 cacheAsBitmap 属性设置为true),则各个窗口将隔离开来进行缓存。用户可以拖动窗口使其互相重叠,每个窗口并不重新生成矢量内容。 
■Alpha 通道遮罩:当使用 Alpha 通道遮罩时,必须将 cacheAsBitmap 属性设置为 true。 
有关详细信息,请参阅第357页的“Alpha 通道遮罩”。 
所有这些情况下,启用位图缓存后都通过优化矢量图来提高应用程序的响应能力和互动性。此外,只要对显示对象应用滤镜,Flash Player 就会将 cacheAsBitmap 自动设置为 true,即使已明确将其设置为 false 也是如此。如果清除了显示对象的所有滤镜,则 cacheAsBitmap属性会返回最后设置的值。 

何时避免使用位图缓存 
滥用此功能对 SWF 文件可能会有负面影响。使用位图缓存时,请记住下面的准则: 
■不要过度使用表面(启用了缓存的显示对象)。每个表面使用的内存都比常规显示对象多,这意味着只在需要提高呈现性能时才启用表面。 
缓存的位图使用的内存比常规显示对象多很多。例如,如果舞台上 Sprite 实例的大小为250 x 250 个像素,缓存它时可能会使用 250 KB 的内存,如果它是常规(未缓存的)Sprite实例,则使用 1 KB 的内存。 
■避免放大缓存的表面。如果过度使用位图缓存,尤其是放大内容时,将使用大量的内存(请参阅上一段落)。 
■将表面用于通常为静态(非动画)的显示对象实例。可以拖动或移动实例,但实例内容不应为动画或者有太多的变化。(动画或变化的内容更可能包含在包含动画MovieClip 实例或 Video 实例中。)例如,如果旋转或变形某一实例,实例在表面和矢量数据之间会有所改变,这种情况难于处理,对 SWF 文件会产生负面影响。 

■如果将表面和矢量数据混在一起,则会增加 Flash Player(有时还有计算机)需要处理的工作量。尽可能将表面归为一组 — 例如,创建窗口应用程序时。 

 

启用位图缓存 
要为显示对象启用位图缓存,请将它的 cacheAsBitmap 属性设置为 true:mySprite.cacheAsBitmap = true;将 cacheAsBitmap 属性设置为 true 后,您可能会注意到,显示对象的像素会自动与整个坐标对齐。测试 SWF 文件时,您还会注意到,在复杂矢量图像上执行的任何动画的呈现速度都快得多。即便将 cacheAsBitmap 已设置为 true,如果出现以下一种或多种情况,也不会创建表面(缓存的位图): 
■位图高度或宽度超过 2880 个像素。 

分享到:
评论

相关推荐

    优化Flash性能 Optimizing Flash performance

    在IT领域,尤其是在游戏开发、互动媒体设计以及网络应用程序中,Adobe Flash因其强大的动画和交互功能而被广泛使用。然而,随着技术的发展,Flash的性能优化成为了一个关键议题,因为性能不佳可能导致用户体验下降,...

    flash image处理类库

    在Flash中,可以使用BitmapData类来处理图像数据。BitmapData对象可以用于读取、写入和操作位图。例如,你可以将一个JPEG图像转换为BitmapData对象,然后进一步处理,如调整大小、裁剪或应用滤镜效果。 3. 字符与...

    Flash文字交替显示动画.rar

    5. **优化性能**:为了保证动画流畅,需要合理使用缓存策略,如设置文本字段的`cacheAsBitmap`属性,以提高渲染效率。 6. **测试与调试**:在Flash IDE中预览动画效果,确保文字交替顺畅无误。如果遇到问题,可以...

    flash比较完整的一个绘图板源码.rar

    这个“flash比较完整的一个绘图板源码.rar”文件包含了一个使用Flash ActionScript 3(AS3)编写的绘图板程序的源代码。ActionScript是Flash平台上的主要编程语言,主要用于添加动态功能和交互性。 源码分析: 1. *...

    flash颜色画板代码

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

    flash3dtunnel_flash源码_

    6. **性能优化**:由于Flash的3D渲染相对消耗资源,源码可能包含一些优化策略,如减少不必要的重绘、使用位图缓存或者使用DisplayObject的`cacheAsBitmap`属性来提高性能。 学习并理解这个源码,不仅可以帮助我们...

    flash as3 仿苹果菜单

    在本文中,我们将深入探讨如何使用Flash AS3创建一个仿苹果风格的菜单。Apple的用户界面以其优雅、直观和响应迅速而闻名,因此在Flash中实现类似的菜单效果可以帮助提升用户体验,尤其是在网页或互动应用程序中。 ...

    圆环旋转动画,flash 脚本源码.rar

    合理使用缓存(`cacheAsBitmap`属性)可以帮助提升动画流畅度,特别是对于复杂图形或大量对象的场景。 总的来说,“圆环旋转动画,flash 脚本源码.rar”是一个很好的学习素材,它涵盖了ActionScript的基本用法和...

    as3 flash 天气预报

    ActionScript是Adobe Flash Professional和Flash Builder等工具中使用的脚本语言,用于为网页和互动内容添加动态功能。AS3是其最新版本,提供了更强大的性能和面向对象的特性。 首先,我们需要理解天气预报应用程序...

    flash像素级精确选择实现

    在Flash开发中,实现像素级精确选择是一项关键的技术,尤其对于角色扮演游戏(RPG)这样的类型,其中玩家可能需要与游戏环境中的微小元素进行互动。这篇内容将深入探讨如何在Flash环境中通过ActionScript实现像素级...

    Flash AS3 工具性能输出窗口

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

    FLASH AS3 loading 源文件 源代码

    如果加载的是位图,可以使用`cacheAsBitmap`属性提高渲染性能。 9. **错误处理** 为了处理加载失败的情况,我们需要监听`IOErrorEvent.IO_ERROR`和`SecurityErrorEvent.SECURITY_ERROR`事件。 10. **性能优化** ...

    Creating_ActionScript3_components_in_flash_source

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

    wavewarp_flash源码_源码

    如果源码使用了DisplayObject的cacheAsBitmap属性,那么在动画运行过程中,只有首次绘制时会消耗计算资源,后续的动画帧只需要简单地重新定位和绘制缓存的位图,从而减少重绘次数。 为了实现7种颜色的线条动画,...

    thumbnailsgrid_flash源码_

    在Flash开发中,这样的源码通常涉及到ActionScript 3.0编程语言,以及Flash Professional IDE或者Flash Builder等开发工具的使用。ActionScript是用于创建交互式、动态内容的关键技术,尤其在网页多媒体元素和游戏...

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

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

    flash优化技巧

    下面将深入探讨《flash优化技巧》中的关键知识点,帮助开发者提升Flash应用的效率。 #### CPU资源管理与优化 - **理解渲染机制**:Flash的渲染机制会占用CPU资源,尤其是在处理复杂的图形或动画时。即使一个对象的...

    Flash简易绘图程序源码

    为了提高性能,程序可能使用`cacheAsBitmap`属性将复杂形状转化为位图,这样在移动或缩放时可以更快地渲染。 9. **事件冒泡和捕获**: 事件模型在绘图程序中起着关键作用。当用户交互时,事件会从最底层的元素...

    flash as3.0的涂鸦板

    6. **优化性能**:在处理大量绘图操作时,为了提高性能,可以使用`stage`的`cacheAsBitmap`属性,将其设置为`true`,以缓存舞台的位图表示,减少重绘次数。 7. **交互设计**:除了基本的绘画和清除功能,还可以增加...

    flash as3.0 图片随机过渡效果

    注意性能优化,如避免不必要的复制`BitmapData`对象,使用`cacheAsBitmap`属性提高渲染效率,以及合理调度动画执行,避免过度占用CPU资源。 通过以上这些知识点,开发者可以创建出丰富多彩的图片随机过渡效果,使...

Global site tag (gtag.js) - Google Analytics