Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex Flex 4:如何应用矩形DropShadow?_Apache Flex - Fatal编程技术网

Apache flex Flex 4:如何应用矩形DropShadow?

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

我不熟悉Flex,所以有些东西我不习惯。我在
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>