考虑手动创建 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 属性。
|
|
|