使用 3D 效果

考虑手动创建 3D 效果。

Flash Player 10 和 AIR 1.5 引入了一个 3D 引擎,允许您对显示对象应用透视转换。您可以使用 rotationX rotationY 属性或 Graphics 类的 drawTriangles() 方法应用这些转换。您还可以使用 z 属性应用深度。请记住,每个经过透视转换的显示对象都将被栅格化为位图,因此需要更多内存空间。

下图演示了使用透视转换时由栅格化处理生成的消除锯齿:

查看完全大小图形
由透视转换导致的消除锯齿

消除锯齿是将矢量内容动态栅格化为位图的结果。当您在台式机版本的 AIR 和 Flash Player 中以及在用于移动设备的 AIR 2.0.1 和 AIR 2.5 中使用 3D 效果时,会消除锯齿。但是,在移动设备的 Flash Player 上不会应用锯齿消除。

如果您可以手动创建 3D 效果,而无需依赖本机 API,则可以减少内存使用量。不过,Flash Player 10 和 AIR 1.5 中引入的新 3D 功能更便于进行纹理映射,因为 drawTriangles() 等方法可以本机处理纹理映射。

作为开发人员,应确定要创建的 3D 效果在通过本机 API 或手动处理后是否会提供更好的性能。请考虑 ActionScript 执行和呈现性能以及内存使用量。

在 AIR 2.0.1 和 AIR 2.5 移动应用程序中,您将 renderMode 应用程序属性设置为 GPU ,则 GPU 会执行 3D 转换。 但是,如果 renderMode CPU ,则由 CPU 而不是 GPU 执行 3D 转换。在 Flash Player 10.1 应用程序中,CPU 执行 3D 转换。

当 CPU 执行 3D 转换时,如果要对显示对象应用任何 3D 转换,则需要内存中有两个位图。一个位图用于源位图,另一个用于透视转换的版本。在这种情况下,3D 转换的工作原理与滤镜类似。因此,当 CPU 执行 3D 转换时尽量少用 3D 属性。