将过滤器限制为可见屏幕 - Actionscript 3

时间:2009-08-03 18:22:18

标签: actionscript-3 flex3 filter

我目前正在使用FlexSDK / AS3,并且有一个包含许多对象的画布。画布很大 - 大约4K x 4K像素,我做了很多缩放/缩放/滚动。视口大约只有800x450。

我正在尝试将一个模糊滤镜应用到画布上 - 我已经想到它并且它工作正常,除了这个小错误:

  

如果生成的图像超出最大尺寸,则不应用滤镜。在AIR 1.5和Flash Player 10中,最大宽度或高度为8,191像素,总像素数不能超过16,777,215像素。 (因此,如果图像宽度为8,191像素,则其高度仅为2,048像素。)在Flash Player 9及更早版本以及AIR 1.1及更早版本中,限制高度为2,880像素,宽度为2,880像素。例如,如果放大应用了滤镜的大型影片剪辑,则如果生成的图像超出最大尺寸,则会关闭滤镜。 - AS3文档

当我缩小我的过滤器工作正常。但是在放大时,像素限制被破坏,过滤器无法工作。

由于我只需要屏幕当前可见部分模糊 - 800x450切片 - 有没有办法选择性地模糊屏幕的那一部分?

1 个答案:

答案 0 :(得分:2)

我认为您不能指定DisplayObject的区域来应用过滤器。这是全有或全无。

画布的内容有多复杂?元素是否具有互动性?你能将它们分成更小的矩形并将它们放入网格中吗?

如果它只是一个图像或一组图像,您可以将可查看部分复制到BitmapData对象中。您将隐藏大画布并仅使用位图对象显示位图数据。您可以在缩放和滚动事件上添加侦听器,然后在必要时更新BitmapData和Bitmap。

如果它是一组交互式控件,我认为您最好的选择是将它们组成一个网格。然后,您可以将模糊应用于网格中的所有单元格(每个单元格的尺寸较小)。

请注意,模糊许多像素将成为真正的性能猪!