Flex 4.5 Rect проблемы с размером при использовании процентов - PullRequest
1 голос
/ 28 июня 2011

Я пытался поиграть с различными комбинациями следующего компонента 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>

Я потерпел неудачу в моих попытках сделать что-то, что должно быть очень простым. Я просто хочу нарисовать градиентную заливку с помощью тени, которая при создании с помощью popupManager в моем основном файле MXML будет составлять 80% ширины экрана и 15% высоты экрана.

В настоящее время значения в моем примере кода приведены в пикселях, но это нежелательно. Они есть, поскольку FlashBuilder 4.5 заставляет вещи исчезать из виду, как только я изменяю их на проценты.

Я пытался обернуть Rect тегом Graphic, пробовал различные комбинации ширины, процентного значения, левого и правого значений и т. Д. И т. Д. И т. Д. (Обратите внимание, что свойства left, right, top и bottom также были бы нежелательны, поскольку я хотите переместить это поле из верхней части экрана в верхнюю часть документа MXML)

Любая помощь с этим была бы очень признательна.

1 Ответ

2 голосов
/ 29 июня 2011

Что-то странное происходит с вычислением процентов из-за того, как работает менеджер всплывающих окон.Я не могу понять, как это сделать.Я взломал это работает, хотя.Может быть, кто-то может придумать что-нибудь получше, но посмотрите:

  1. Я удалил высоту / ширину из корневого элемента
  2. Я удалил Graphic узел
  3. Я установил для прямоугольника 100% height и width
  4. При инициализации я установил height / width как функцию parent.

Вот код:

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

Надеюсь, это поможет.Опять же, это взлом, но похоже, что это работает;)

...