Flex 3.5中的DropShadowFilter是否可变?

时间:2010-06-24 19:53:54

标签: flex dropshadow

我使用一些可绑定变量作为参数定义了一个dropfilter。

<mx:filters>  
   <mx:DropShadowFilter id="torinofilter" distance="0" color="{dropShadowColor}" 
    blurX="{dropBlur}" blurY="{dropBlur}" strength="8" quality="2" 
    alpha="{dropAlpha}"/>  
</mx:filters>

我想在这样的方法调用中更新过滤器:

this.dropShadowColor = <new color>  
this.dropBlur = 15.0;  
this.dropAlpha = 0.8;

在跟踪this.dropShadowColortorinofilter.color时,我发现它们已更新为新颜色,但是dropfilter的颜色没有变化。

我不想创建新的过滤器,因为我遇到了swapChildren的问题。

1 个答案:

答案 0 :(得分:0)

filters的属性不能像这样修改。

  

要修改现有过滤器对象,必须使用修改过滤器数组副本的技术:

     
      
  1. filters数组的值分配给临时数组,例如名为myFilters的数组。
  2.   
  3. 使用临时数组myFilters修改属性。例如,要设置数组中第一个过滤器的quality属性,可以使用以下代码:myFilters[0].quality = 1;
  4.   
  5. 将临时数组的值分配给filters数组。
  6.   

基本上,当您阅读DisplayObject的filters数组时,flash会返回数组的副本,而不是实时过滤器数组。推送新过滤器或更新现有过滤器只会修改副本,而不是原件;你必须将它分配回数组以反映变化。

从actionscript而不是mxml执行此操作。


  

我不想创建新的过滤器,因为我遇到swapChildren的问题。

swapChildren仅适用于显示对象(Flex容器中的UIComponents)。