有什么办法可以针对即将到来的视网膜显示器浪潮优化现有的 SWF?或者,在创建新的 SWF 时是否需要为视网膜显示做准备?从我所见所闻,SWF 看起来很差。
2 回答
通常,您希望尽可能避免使用位图图形。如果您只使用矢量和字体,这些可以毫无问题地放大。避免杀死 CPU 的技巧是cacheAsBitmap
在可行的情况下使用,例如,当对象不经常更改时。然后您获得矢量 grx 的分辨率优势,并在初始渲染后获得位图 grx 的速度。
另一个开始研究的工具是使用 Stage3D。这一层位于 Air 程序的后面,作为一个强大的背景。真正的优势在于它使用 GPU 而不是 CPU,这意味着您有两个处理器来踢出 grx。如果您开发或使用一致的前台和后台系统,这可以提高您的 grx 性能。Starling 2D 是一种似乎几乎准备就绪的工具。这应该有助于缩短 Stage3D 的许多困难领域。我还没有使用 Stage3D,所以很多都是推测性的。当更有经验时,我会编辑我的答案。
编辑
@TianzhenLin 的回复有一些不错的提示。它提醒我CacheAsBitmapMatrix
应该用于将要旋转、缩放等但不会在结构上改变的对象。
Flex 4.6 支持MultiDPIBitmapSource,这将提供一种方法来提供针对不同屏幕密度优化的位图。您可以通过此链接阅读深入讨论。
一般来说,如果您的位图用作图标、徽标显示,其中动画或转换仅限于移动、平移和剪切,并且您的位图没有缩放,您将获得最佳的显示效果和下降性能。与这种用法的位图相比,矢量资源的性能更难预测。
但是,位图并不是所有解决方案的灵丹妙药。一旦涉及任何旋转、扭曲或缩放(放大和缩小),它们就会对性能产生不利影响,这是因为系统必须进行更多计算才能重新定位每个像素,这与矢量相比涉及更多.
Stage3D 也值得研究,但如果您主要使用 2D,明智地选择 MultiDPIBitmapSource 和矢量图形可能是一个更简单的解决方案。