Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 缓存位图和过滤器_Actionscript 3_Flash - Fatal编程技术网

Actionscript 3 缓存位图和过滤器

Actionscript 3 缓存位图和过滤器,actionscript-3,flash,Actionscript 3,Flash,为什么在使用过滤器时cacheAsBitmap会自动设置为true 我有一个movieclip,每帧都会被绘制到舞台上,因为它有一个播放时间线,并且每隔一段时间就会旋转一次,所以我想将cacheAsBitmap设置为false。但是movieclip有一个dropshadow过滤器,它将cacheAsBitmap设置为true,这不意味着缓存每一帧会损失很多性能吗 从正在绘制的movieclip中删除dropshadow过滤器并将其应用于其所有子项是否是一种解决方案?来自文档: 每当您选择cac

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

我有一个movieclip,每帧都会被绘制到舞台上,因为它有一个播放时间线,并且每隔一段时间就会旋转一次,所以我想将cacheAsBitmap设置为false。但是movieclip有一个dropshadow过滤器,它将cacheAsBitmap设置为true,这不意味着缓存每一帧会损失很多性能吗

从正在绘制的movieclip中删除dropshadow过滤器并将其应用于其所有子项是否是一种解决方案?

来自文档:

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

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

使用过滤器+时间轴动画通常是个坏主意。但是,一个好的优化方法是将过滤器应用到显示列表中更深的位置,应用到未设置动画的对象上。更好的是,如果可能的话,尝试使用带有光栅化效果的位图,这样就不会在运行时计算效果


别忘了使用Scout查看玩家对你的物品做了什么

看这个:我不能预光栅化我认为的任何东西,因为当我的movieclip旋转时,阴影需要更新,movieclip应该始终以45度投射阴影,并且阴影当然会根据movieclip旋转的方式而看起来不同。但我会把阴影放在电影唇深,谢谢你的解释和建议。