2010-06-24 52 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)。

相關問題