1

我尝试过使用以下 MXML 组件的各种组合:

<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" width="80%" height="100%">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
        <s:DropShadowFilter id="mainDSF" color="0x000000" alpha=".7" blurX="20" blurY="20" quality="1" distance="0" />
    </fx:Declarations>

    <s:Graphic>

        <s:Rect width="200" height="200" bottomLeftRadiusX="10" bottomLeftRadiusY="10"
                    bottomRightRadiusX="10" bottomRightRadiusY="10" filters="{[mainDSF]}"
                    horizontalCenter="0">
                <s:fill>
                    <s:LinearGradient rotation="90">
                        <s:GradientEntry color="0x57DDF5" ratio=".05" />
                        <s:GradientEntry color="0x32D2F2" ratio=".25" />
                        <s:GradientEntry color="0x01B7E6" />
                    </s:LinearGradient>
                </s:fill>
            </s:Rect>
    </s:Graphic>
</s:Group>

我尝试做一些应该很简单的事情,但没有成功。我只想绘制一个带有阴影的渐变填充框,当在我的主 MXML 文件中使用 popupManager 创建时,它将是屏幕宽度的 80% 和屏幕高度的 15%。

当前在我上面的代码示例中的值以像素为单位,但这是不可取的。它们就在那里,因为一旦我将它们更改为百分比,FlashBuilder 4.5 就会使事物从视图中消失。

我已经尝试用图形标签包装 Rect,尝试了各种宽度、百分比宽度、左右值的组合......等等等等(注意,left、right、top 和 bottom 属性也是不可取的,因为我希望移动此框从屏幕顶部到 MXML 文档的顶部)

对此的任何帮助将不胜感激。

4

1 回答 1

2

由于弹出管理器的工作方式,计算百分比时发生了一些奇怪的事情。我不能完全把我的手指放在它上面。不过,我破解了它。也许有人可以想出更好的东西,但看看:

  1. 我从根元素中删除了高度/宽度
  2. 我删除了Graphic节点
  3. 我将矩形设置为使用 100%heightwidth
  4. 在初始化时,我将height/设置widthparent.

这是代码:

<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx">
    <fx:Declarations>
        <s:DropShadowFilter id="mainDSF" color="0x000000" alpha=".7" blurX="20" blurY="20" quality="1" distance="0" />
    </fx:Declarations>

    <s:initialize>
        height = parent.height * 0.15;
        width = parent.width * 0.8;
    </s:initialize>

    <s:Rect width="100%" height="100%" bottomLeftRadiusX="10" bottomLeftRadiusY="10"
                bottomRightRadiusX="10" bottomRightRadiusY="10" filters="{[mainDSF]}"
                horizontalCenter="0">
        <s:fill>
            <s:LinearGradient rotation="90">
                <s:GradientEntry color="0x57DDF5" ratio=".05" />
                <s:GradientEntry color="0x32D2F2" ratio=".25" />
                <s:GradientEntry color="0x01B7E6" />
            </s:LinearGradient>
        </s:fill>
    </s:Rect>

</s:Group>

希望这可以帮助。同样,这是一个 hack,但它看起来很有效;)

于 2011-06-29T01:42:32.420 回答