我使用一些可绑定变量作为参数定义了一个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的问题。
答案 0 :(得分:0)
filters的属性不能像这样修改。
要修改现有过滤器对象,必须使用修改过滤器数组副本的技术:
- 将
filters
数组的值分配给临时数组,例如名为myFilters
的数组。- 使用临时数组
myFilters
修改属性。例如,要设置数组中第一个过滤器的quality属性,可以使用以下代码:myFilters[0].quality = 1;
- 将临时数组的值分配给
醇>filters
数组。
基本上,当您阅读DisplayObject的filters
数组时,flash会返回数组的副本,而不是实时过滤器数组。推送新过滤器或更新现有过滤器只会修改副本,而不是原件;你必须将它分配回数组以反映变化。
从actionscript而不是mxml执行此操作。
我不想创建新的过滤器,因为我遇到
swapChildren
的问题。
swapChildren
仅适用于显示对象(Flex容器中的UIComponents)。