2

为什么使用过滤器时 cacheAsBitmap 会自动设置为 true?

我有一个每帧都被绘制到舞台上的影片剪辑,因为它有一个播放时间线并且它每隔一段时间就会旋转一次,所以我希望将 cacheAsBitmap 设置为 false。但是movieclip 有一个dropshadow-filter,它把cacheAsBitmap 设置为true,这不是说缓存每一帧都会损失很多性能吗?

从正在绘制的影片剪辑中删除阴影过滤器并将其应用于其所有子级是否是一种解决方案?

4

1 回答 1

1

从文档:

每当您将过滤器应用于影片剪辑时(当其过滤器数组不为空时),cacheAsBitmap 属性就会自动设置为 true。如果影片剪辑应用了过滤器,则即使将该属性设置为 false,该影片剪辑的 cacheAsBitmap 也会报告为 true。如果清除影片剪辑的所有过滤器,cacheAsBitmap 设置将更改为上次设置的值。

我相信这是因为 Flash Player 必须使用位图版本的 MovieClip 来应用效果 - 大多数滤镜都是在像素级别完成的。然后将其缓存,以便进一步的转换(如x/y)更有效。cacheAsBitmap因此,无论设置为真还是假,实际上并没有真正的区别。

使用过滤器 + 时间线动画通常是个坏主意。但是,一个很好的优化是在显示列表的更深处,在没有动画的对象上应用过滤器。更好的是,如果可能,请尝试使用带有光栅化效果的位图,这样您的效果就不会在运行时计算。

不要忘记使用 Scout 来查看玩家对您的对象所做的确切操作!

于 2013-03-26T14:16:21.623 回答