分类: 嵌入式
2009-07-08 14:50:04
基于多帧对多个显示对象进行排队
开发人员可以使用另一种技术让带有大量可见对象的屏幕图像创建变得流畅,这种技术就是利用排队的容器创建策略。默认情况下,Flex在尝试加载指定屏幕图像上的所有可视化对象时,会显示一个进度条。如果允许Flex基于多帧对对象创建排队,应用程序的加载时间好像明显缩短。尽管显示的总时间没有变,用户能够更快地看到应用程序的布局,这允许最后的显示对象一创建好便呈现出来。
图 4显示了在应用程序的.mxml文件中使用这种方法的一个简单例子。
图 4. 基于多帧对多个显示对象创建进行排队。
设置creationPolicy = “queued”,允许应用程序框架基于多帧分解可视对象的创建过程,同时允许加载状态早点结束。对象的创建顺序默认为声明它们的顺序。通过使用creationIndex 属性,可以强制排队的创建按照数字顺序初始化,而不管声明顺序如何。
其他呈现技巧
使屏幕图像平滑过渡
对于要在屏幕之间过渡的应用程序,提前创建和缓冲显示对象可以让图像过渡变得平滑。缓冲显示对象不仅让应用程序的屏幕过渡更加平滑,而且还可以减少操作DisplayObject派生类时特别突出的内存碎片化问题。
只呈现要可视的部分对象
需要只在屏幕上显示可视对象的一部分时,要使用ScrollRects代替Masks。Masks需要在确认视图之前呈现整个可视对象,而ScrollRects可以比照边界框来剪辑视图,只呈现对象的可视部分。然而,为了让对象能够利用ScrollRects进行优化,必须将cacheAsBitmap属性设为true才能避免二次呈现。
呈现阶段
了解呈现过程的底层阶段很重要,因为开发人员的应用程序中的瓶颈可能出现在任意或所有阶段中,导致应用程序的速度或性能大幅下降。呈现过程的优化总体上需要开发人员进行一些实验,但了解呈现过程的不同阶段所处理的工作,将有助于指出潜在的问题。
Flash中的呈现出现在三个不同阶段:布局、光栅和合成。
布局
在呈现的布局阶段中,布局管理器负责处理舞台上包含的所有显示对象。首先,它必须计算文本位置,并利用字体信息计算文本对象的尺寸和流动。布局阶段中的下一步是计算舞台上所有DisplayObjects的所有父/子关系。每个子对象必须位于其父对象的坐标中,直到坐标可以转换为最终可见的图形层。一旦沿着目前变平的DisplayObjects坐标确定了图形层的大小,布局管理器可以确定位于可见区域的对象,并把这些对象传递给光栅。