0
我搜索了很多但沒有成功,似乎沒有人遇到過這個問題。 我有一個displayObject
,我想申請(例如)兩個過濾器:讓我們說兩個dropShadowFilter
,一個與inner=true
,另一個與inner=false
。 正如文檔中所述,過濾器按照它們出現在filters
陣列中的順序進行應用。因此,如果您先放置外部陰影濾鏡,則第二個濾鏡也會應用於生成的陰影。 更改順序不是一個詳盡的解決方案,問題仍然存在,並且應用不同的過濾器可以再次複製奇怪的效果。應用多個過濾器,但不是級聯(過濾器陣列中的前一個過濾器)
我正在尋找一種方法來避免這種情況,也就是將所有濾鏡應用於原始對象,未經任何其他濾鏡修改。
非常感謝。
下面的代碼片段有用做一些快速測試。
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Declarations>
<s:DropShadowFilter id="dropShadowOuter"
inner="false"
distance="65"
color="#000000"
alpha="0.4"/>
<s:DropShadowFilter id="dropShadowInner"
inner="true"
distance="9"
color="#f3f951"
alpha="1"/>
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.core.UIComponent;
protected function applyFilters_clickHandler(event:MouseEvent):void
{
(OutIn.textDisplay as UIComponent).filters = [dropShadowOuter,dropShadowInner];
(InOut.textDisplay as UIComponent).filters = [dropShadowInner,dropShadowOuter];
(Out.textDisplay as UIComponent).filters = [dropShadowInner];
(In.textDisplay as UIComponent).filters = [dropShadowOuter];
}
]]>
</fx:Script>
<s:VGroup>
<s:Button id="applyFilters" label="apply filters" click="applyFilters_clickHandler(event)"/>
<s:TextArea id="OutIn"
text="EXAMPLE TEXT"
width="600" height="200"
fontFamily="Arial Black"
fontSize="72"/>
<s:TextArea id="InOut" text="EXAMPLE TEXT"
width="600" height="200"
fontFamily="Arial Black"
fontSize="72"/>
<s:TextArea id="Out"
text="EXAMPLE TEXT"
width="600" height="200"
fontFamily="Arial Black"
fontSize="72"/>
<s:TextArea id="In"
text="EXAMPLE TEXT"
width="600" height="200"
fontFamily="Arial Black"
fontSize="72"/>
</s:VGroup>
</s:Application>