2009-08-03 41 views
1

我目前在FlexSDK/AS3中工作,并有一个包含许多对象的画布。画布很大 - 大约4K x 4K像素,我做了很多缩放/缩放/滚动。视口只有大约800x450。限制过滤器到可见屏幕 - Actionscript 3

我试图运用模糊滤镜画布 - 我想通了,它工作正常,除了这一个小错误:

如果所得图像超过,则不应用过滤器最大尺寸。在AIR 1.5和Flash Player 10中,最大宽度或高度为8,191像素,总像素数不得超过16,777,215像素。 (因此,如果图像宽度为8,191像素,则只能高出2048像素。)在Flash Player 9及更早版本和AIR 1.1及更早版本中,高度限制为2,880像素,宽度为2,880像素。例如,如果您在应用了滤镜的情况下放大大型影片剪辑,则在结果图像超出最大尺寸时关闭滤镜。 - AS3文档

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

因为我只需要屏幕的当前可见部分模糊 - 800x450切片 - 有什么办法可以选择性地只模糊屏幕的那一部分吗?

回答

2

我不认为你可以分配一个DisplayObject的区域来应用过滤器。这是全部或没有。

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

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

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

请注意,模糊许多像素将是一个真正的表演猪!