使用百分比时,Flex 4.5 Rect size问题

时间:2011-06-28 18:27:54

标签: flex resize flexbuilder graphic rect

我尝试过使用以下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就会从视图中消失。

我尝试使用Graphic标签包装Rect,尝试了width,percentageWidth,left&amp;的各种组合。正确的值..等等等(注意,左,右,顶部和底部属性也是不可取的,因为我希望将此框从屏幕顶部移动到MXML文档的顶部)

对此有任何帮助将非常感激。

1 个答案:

答案 0 :(得分:2)

由于弹出管理器的工作方式,计算百分比会发生奇怪的事情。我不能完全把手指放在上面。但 黑客攻击 它可以正常工作。也许有人可以提出更好的东西,但看一看:

  1. 我从根元素中移除了高度/宽度
  2. 我删除了Graphic节点
  3. 我将矩形设置为使用100%heightwidth
  4. 初始化时,我将height / width设置为parent的函数。
  5. 以下是代码:

    <?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>
    

    希望这会有所帮助。再次,它是一个黑客,但看起来它的工作;)