使用 clone() 方法

每个滤镜类中的 clone() 方法都会返回一个新的滤镜实例,它与原始滤镜实例具有相同的属性。当您使用滤镜时,可能要制作滤镜的副本,为此需要使用 clone() 方法复制滤镜。如果不使用克隆方法来复制滤镜,Flash 将只创建对原始滤镜的引用。如果 Flash 创建对原始滤镜的引用,则对复制的滤镜所做的任何更改也将同时修改原始滤镜对象。

下面的过程创建 DropShadowFilter (greenDropShadow) 的一个新实例,调用 clone() 方法来复制绿色投影滤镜,并将新滤镜保存为 redDropShadow。克隆的滤镜设置一个新的投影颜色,新旧两个滤镜都将应用于舞台上的 flower_mc 影片剪辑实例中。

使用克隆方法:

  1. 创建一个新的 Flash 文档并将它命名为 clone.fla
  2. 在舞台上创建一个影片剪辑。
  3. 选择影片剪辑实例,然后在属性检查器的"实例名称"文本框中键入 flower_mc
  4. 在时间轴中选择第 1 帧,在"动作"面板中,添加下面的代码:
    import flash.filters.DropShadowFilter;
    var greenDropShadow:DropShadowFilter = new DropShadowFilter();
    greenDropShadow.color = 0x00FF00; // green
    var redDropShadow:DropShadowFilter = greenDropShadow.clone();
    redDropShadow.color = 0xFF0000; // red
    flower_mc.filters = [greenDropShadow, redDropShadow];
    

    前面的代码创建投影滤镜的一个新实例,并将其命名为 greenDropShadow。将使用 DropShadowFilter.clone() 方法复制绿色投影对象,并创建一个名为 redDropShadow 的新滤镜对象。绿色和红色的投影滤镜都将应用于舞台上的 flower_mc 影片剪辑实例中。如果没有调用 clone() 方法,则两个投影滤镜都将显示为红色。出现此现象的原因在于,由于红色投影包含对绿色投影的引用,所以设置 redDropShadow.color 属性将同时更改红色投影和绿色投影对象。

  5. 选择"控制">"测试影片"对该 Flash 文档进行测试。

    该滤镜将被复制并克隆,并且两个滤镜都将应用于 flower_mc 实例。

有关 clone() 方法的更多信息,请参见"ActionScript 2.0 语言参考"中的 clone(DropShadowFilter.clone 方法)。有关信息,还可以参见任何滤镜类的 clone() 方法。