我经常搜索但没有成功,似乎没有人遇到过这个问题。
我有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 :(得分: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>
上面的示例不是您的解决方案,但可能会为您提供正确的方向。