我创建了一个全光谱色轮 Sprite 对象,它由 1440 个矢量三角形组成,或者如果你愿意的话。
因为我想为色轮设置动画,所以我激活了显示对象的 cacheAsBitmap 属性。但是,将矢量缓存为位图并不会提高动画期间的性能——它仍然很慢、很跳跃。
通过无损压缩将色轮的 PNG 屏幕截图导入库中,将其转换为 Sprite,然后旋转这个新的图像资源,在动画过程中表现出色。
为什么未压缩的 PNG 图像资产导入输出执行相同的矢量图像,并将 cacheAsBitmap 属性设置为 true?
我创建了一个全光谱色轮 Sprite 对象,它由 1440 个矢量三角形组成,或者如果你愿意的话。
因为我想为色轮设置动画,所以我激活了显示对象的 cacheAsBitmap 属性。但是,将矢量缓存为位图并不会提高动画期间的性能——它仍然很慢、很跳跃。
通过无损压缩将色轮的 PNG 屏幕截图导入库中,将其转换为 Sprite,然后旋转这个新的图像资源,在动画过程中表现出色。
为什么未压缩的 PNG 图像资产导入输出执行相同的矢量图像,并将 cacheAsBitmap 属性设置为 true?
因为每次旋转对象时,它都必须重新计算一个新的位图。
cacheAsBitmap仅适用于正在平移而不是旋转的对象;来自文档:
cacheAsBitmap 属性最适合用于具有大部分静态内容且不经常缩放和旋转的影片剪辑。对于此类影片剪辑,cacheAsBitmap 可以在影片剪辑被平移时(当其 x 和 y 位置发生变化时)提高性能。
这是因为缓存的位图被逐个像素地直接复制到显示表面(为了速度——这称为blitting)。每次渲染位图时都对位图应用变换对于偶尔旋转一次的对象来说是愚蠢的。仅在应用转换时重新计算位图是一种设计决策,可在最常见的情况下提高性能,在这种情况下,除了平移之外的转换并不常见。