2010-06-24 26 views
0

我有一个使用一些可绑定变量作为参数定义的dropfilter。DropShadowFilter在Flex 3.5中是否可变?

<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的问题。

回答

0

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

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

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

基本上当你读filters阵列DisplayObject的,闪光返回数组,而不是动态滤镜阵列的副本。推送新过滤器或更新现有过滤器只会修改副本,而不是原始过滤器;您必须将其分配回数组以反映更改。

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


我宁愿不要,因为这样我得到的问题与swapChildren创建一个新的过滤器。

swapChildren仅适用于显示对象(Flex容器的情况下为UIComponent)。

相关问题