2014-07-07 122 views
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> 

回答

0

應用過濾器發生在您應用過濾器的當前位圖數據上。所以不可能找到一個TextArea和多個過濾器的解決方案。 您可以嘗試在每個TextArea上使用多個TextArea和一個過濾器,並以良好的混合模式重疊這些textarea。

<s:Group blendMode="multiply"> 

     <s:TextArea id="Out" 
        alpha=".5" 
        filters="{[dropShadowOuter]}" 
        text="EXAMPLE TEXT" 
        width="600" height="200" 
        fontFamily="Arial Black" 
        fontSize="72"/> 
     <s:TextArea id="In" 
        alpha=".5" 
        filters="{[dropShadowInner]}" 
        text="EXAMPLE TEXT" 
        width="600" height="200" 
        fontFamily="Arial Black" 
        fontSize="72"/> 
    </s:Group> 

上面的這個例子不是你的解決方案,但可能會讓你在正確的方向邁出一步。

相關問題