Apache flex Flex 4:如何应用矩形DropShadow?
我不熟悉Flex,所以有些东西我不习惯。我在Apache flex Flex 4:如何应用矩形DropShadow?,apache-flex,Apache Flex,我不熟悉Flex,所以有些东西我不习惯。我在RectMXML组件的Declarations标记中添加了RectangularDropShadow。它没有显示任何内容,我相信我还应该做一些事情来将它应用到Rect <?xml version="1.0" encoding="utf-8"?> <s:Rect xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/s
Rect
MXML组件的Declarations
标记中添加了RectangularDropShadow
。它没有显示任何内容,我相信我还应该做一些事情来将它应用到Rect
<?xml version="1.0" encoding="utf-8"?>
<s:Rect xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
height="314" width="478">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
<s:RectangularDropShadow id="cardAreaShadow"
alpha="0.4"
distance="10"
angle="45"
color="#000000" />
</fx:Declarations>
<s:fill>
<s:SolidColor color="#FFFFFF" />
</s:fill>
</s:Rect>
声明
块仅用于声明对象。因此,您在这里所做的是创建RectangularDropShadow
的实例,而不将其添加到显示列表中,这当然是您无法看到它的原因
另一件要知道的事情是,RectangularDropShadow
有点奇怪:它不是一个过滤器,而是一个本身就是显示对象的对象。为清晰起见:过滤器是可应用于现有显示对象的“视觉效果”。然而,RectangularDropShadow
实际上只是一个应用了一些渐变的矩形
另外,由于它是一个DisplayObject,而Rect
不是一个容器,因此不能简单地删除Declarations
标记并期望它工作。必须将两个对象放在彼此的顶部,如下所示:
<s:RectangularDropShadow id="cardAreaShadow" height="314" width="478"
alpha="0.4" distance="10" angle="45" color="#000000" />
<s:Rect height="314" width="478">
<s:fill>
<s:SolidColor color="#FFFFFF" />
</s:fill>
</s:Rect>
如果我们有过滤器,那么为什么我们需要矩形DropShadow
?
原因是性能:与应用于任意现有DisplayObject的过滤器相比,具有简单渐变的简单形状可以更有效地进行计算。我想要实现的是在矩形
周围有一个阴影。这两种技术都应该适用。RectangularDropShadow可以放置在Rect下方的任何位置。至于过滤器:如果您希望阴影均匀分布在所有边上,最好使用GlowFilter(或者将距离设置为0,并对DropShadowFilter应用高模糊度)
<s:Rect height="314" width="478">
<s:fill>
<s:SolidColor color="#FFFFFF" />
</s:fill>
<s:filters>
<s:DropShadowFilter alpha="0.4" distance="10" angle="45" color="#000000" />
</s:filters>
</s:Rect>