DropShadowFilter——投影滤镜

DropShadowFilter投影滤镜会在原始对象下创建一个副本,然后用纯色填充后并模糊副本,实现投影的效果。它有很多参数可以创建多种不同的效果。DropShadowFilter的构造方法如下:
DropShadowFilter (
    distance:Number = 4,
    angle:Number = 45,
    color:uint = 0,
    alpha:Number = 1,
    blurX:Number = 4,
    blurY:Number = 4,
    strength:Number = 1,
    quality:int = 1,
    inner:Boolean = false,
    knockout:Boolean = false,
    hideObject:Boolean = false
);
还记得前两天我们学的BlurFilter模糊滤镜吗?它只有三个参数,多简单啊!事情到了DropShadowFilter就没那么简单了。我们来一一看看这些选项:
  • distance:显示对象副本较原始对象的偏移量,以像素为单位
  • angle:投影的偏移角度
  • color:投影颜色
  • alpha:投影的透明度
  • blurX:投影在x坐标轴方向的模糊量
  • blurY:投影再y坐标轴方向的模糊量
  • strength:设置投影的强度,值越大投影越暗,与背景产生的对比差异越大
  • quality:模糊执行的次数,和BlurFilter里的quality一样(实际上它们的模糊原理是一样的)
  • inner:决定是投影是在绘制在对象内部还是外部。如果inner设置为true,则投影被限制绘制在对象内部。产生的效果让人感觉背景被挖了一个洞。
  • knockout:设置是否应用挖空效果,即使显示对象填色变为透明,并显示文档的背景颜色。如果不想显示原对象的填充内容,可以设置knockout为true,此时下层的背景图像会显示出来,同时保留投影(通俗的讲,就是投影中原对象部分被挖掉,露出背景部分)。当需要在背景上挖个洞,但又要保持图像填充时,可以非常好的展现这个参数的功能。此时这只knockout为true,投影效果如图2-18所示。 hideObject:当设置为true时会隐藏原对象,同时显示投影而不挖空(如果knockout是false)。结果是只有投影而没有对象,所以如果你只需要投影时,可以使用这个参数。想象一下效果,一架飞机从头顶飞过,而你只看到了地面上的影子。在实际的应用开发中,我经常用它来让两个分别有和没有投影的组件对齐。在复杂的组件上应用投影,会影响运行的性能,所以,直接在组件下方添加一个对象,并在这个对象中绘制投影效果会更好。这样我们可以取消原对象的投影滤镜,而保持投影的效果。

图2-18.应用的了DropShadowFilter滤镜的矩形,其中inner和knockout属性都是true
图2-18效果的源代码DropShadowFilterTest类如下:package {

    import flash.filters.BitmapFilterQuality;
    import flash.filters.DropShadowFilter;

    [SWF(width=550, height=400, backgroundColor=0xEEEEEE)]

   
    public class DropShadowFilterTest extends BitmapFilterTest {

       
        override protected function applyFilter():void {
            var filter:DropShadowFilter = new DropShadowFilter(10);
            filter.blurX = 15;
            filter.blurY = 15;
            filter.quality = BitmapFilterQuality.HIGH;
            filter.inner = true;
            filter.knockout = true;
            _shape.filters = [filter];
        }

    }

}
这个类继承BitmapFilterTest类,并在shape对象上应用了DropShadowFilter。内部投影和挖空效果让人感觉背景被挖空了一块。
posted on 2012-02-25 08:12  唐朝  阅读(2674)  评论(0编辑  收藏  举报