ActionScript - 位图缓存与图像资产性能

时间:2011-03-14 00:35:01

标签: flash actionscript-3 performance bitmap cache-control

我已经创建了一个全光谱色轮Sprite对象,它由1440个矢量三角形或切片组成,如果你愿意的话。

因为我想为色轮设置动画,所以我已经激活了显示对象的cacheAsBitmap属性。但是,将矢量缓存为位图并不会提高动画期间的性能 - 它仍然很慢,很跳跃。

将色轮的PNG屏幕截图导入到具有无损压缩的库中,将其转换为Sprite,并且在动画期间旋转此新图像资源的效果非常好。

为什么导出的未压缩PNG图像资源执行相同的矢量图像且cacheAsBitmap属性设置为true?

1 个答案:

答案 0 :(得分:6)

因为每次旋转对象时,都必须重新计算新的位图。

cacheAsBitmap仅适用于正在翻译但未旋转的对象;来自docs

  

cacheAsBitmap属性最好   与主要使用的电影剪辑一起使用   静态内容,不扩展   并经常旋转。有了这样的电影   剪辑,cacheAsBitmap可以导致   电影时的表现会增加   剪辑被翻译(当它的x和y   位置改变了。)

这是因为缓存的位图被逐个像素地直接复制到显示表面(为了速度 - 这称为blitting)。每次渲染时将变换应用于位图对于仅偶尔旋转一次的对象来说是愚蠢的。仅在应用变换时重新计算位图是一种设计决策,可以在最常见的情况下提高性能,其中除了翻译之外的转换很少发生。