关于使用 ActionScript 缓存和滚动影片剪辑

如果 Flash 中的设计尺寸增大,无论创建的是应用程序还是复杂的脚本动画,都需要考虑性能和优化。如果您的内容保持为静态(如矩形影片剪辑),Flash 将不会优化该内容。因此,在更改矩形影片剪辑的位置时,Flash 将在 Flash Player 7 及早期版本中重绘整个矩形。

在 Flash Player 8 中,可以缓存指定的影片剪辑和按钮以提高 SWF 文件的性能。影片剪辑或按钮是一个表面,实际上是实例的矢量数据的位图版本,矢量数据是一种在 SWF 文件的过程不需要有太多更改的数据。因此,打开了缓存的实例在播放 SWF 文件的过程中不会不断地重绘,这样 SWF 文件就能快速地呈现。

注意

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

可以使用 ActionScript 来启用缓存或滚动和控制背景。可以使用属性检查器对影片剪辑实例启用缓存。若要在不使用 ActionScript 的情况下缓存影片剪辑或按钮,可以在属性检查器中选择"使用运行时位图缓存"选项。

下表包含了对影片剪辑实例的新属性的简要说明:

属性

说明

cacheAsBitmap

使影片剪辑实例缓存其自身的位图表示。Flash 为该实例创建一个 surface 对象,该对象是一个缓存的位图,而不是矢量数据。如果要更改影片剪辑的范围,则表面会重新构建而不是重新调整。有关更多信息和示例,请参见缓存影片剪辑

opaqueBackground

使您可以指定不透明影片剪辑实例的背景颜色。如果将此属性设置为数值,则影片剪辑实例将具有一个不透明(非透明)的表面。不透明位图不具有 Alpha 通道(透明度),可以更快地呈现。有关更多信息和示例,请参见设置影片剪辑的背景

scrollRect

使您可以快速滚动影片剪辑内容并可以用一个窗口查看更大的内容。将裁切影片剪辑内容,且实例会按指定的宽度、高度和滚动偏移而滚动。这样,用户可以快速滚动影片剪辑内容,并用一个窗口显示比"舞台"区域更大的内容。显示在实例中的文本字段和复杂内容可以更快速地滚动,因为 Flash 不需要重新生成整个影片剪辑矢量数据。有关更多信息和示例,请参见 scrollRect (MovieClip.scrollRect 属性)

这三个属性互相独立,但是,当对象被缓存为位图时,opaqueBackgroundscrollRect 属性的作用最佳。将 cacheAsBitmap 设置为 true 时,您只能看到 opaqueBackgroundscrollRect 属性的性能优点。

若要创建也可以滚动的表面,必须设置影片剪辑实例的 cacheAsBitmapscrollRect 属性。表面可以嵌套在其它表面之内。表面将把位图复制到它的父表面上。

有关 Alpha 通道遮罩(要求将 cacheAsBitmap 属性设置为 true)的信息,请参见关于 Alpha 通道遮罩

注意

不能将缓存直接应用于文本字段。需要将文本放在影片剪辑中以利用此功能。有关示例,请参见 Flash install directory\Samples and Tutorials\Samples\ActionScript\FlashType 中的范例文件。

您可以找到对应的范例源文件,该文件说明了如何对实例应用位图缓存。可以在硬盘上的 Samples 文件夹中找到名为 cacheBitmap.fla 的文件。

您也可以找到对应的范例源文件,该文件说明了如何对滚动文本应用位图缓存。可以在硬盘上的 Samples 文件夹中找到范例源文件 flashtype.fla。