0

我有一个使用一些可绑定变量作为参数定义的 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.dropShadowColor和后torinofilter.color,我看到它们已更新为新颜色,但 dropfilter 的颜色没有改变。

我不想创建一个新的过滤器,因为那样我会遇到 swapChildren 的问题。

4

1 回答 1

0

不能像这样修改过滤器的属性。

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

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

基本上,当您读取filtersDisplayObject 的数组时,flash 返回该数组的副本,而不是实时过滤器数组。推送新过滤器或更新现有过滤器只会修改副本,而不是原始过滤器;您必须将其分配回数组以反映更改。

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


我不想创建一个新的过滤器,因为那样我会遇到swapChildren.

swapChildren仅适用于显示对象(在弹性容器的情况下为 UIComponents)。

于 2010-06-25T04:46:16.860 回答