Flex 3 - изменить цвета рамки - PullRequest
       27

Flex 3 - изменить цвета рамки

1 голос
/ 09 августа 2010

У меня есть вопрос, который может показаться "базовым", но я просто не могу понять, как это сделать ...

У меня есть поле, и я хотел бы изменить borderColor. До этого ничего особенного. Просто box.bordercolor = xxxxxx ...

НО, я бы хотел иметь верхнюю и нижнюю границу с одним цветом, а левую и правую границу с другим цветом ... И это часть, где я застрял.

Есть советы? Предложения?

Спасибо за вашу помощь и время! ;)

С уважением, BS_C3


@ Senz

Привет! К сожалению, я не смогу поделиться кодом, не сделав его «непонятным» ...

Но это идея ... У нас есть 2 основных компонента: ArrowButton и Navigator.

ArrowButton - это hbox, содержащий метку и изображение (это изображение является наконечником стрелки, и оно изменяется в зависимости от состояния ArrowButton).

Navigator - это hbox, содержащий серию ArrowButton. ArrowButton перекрывает arrowButton справа для создания заостренного конца кнопки.

А затем вы просто создаете целую кучу функциональных возможностей вокруг этих компонентов.

Надеюсь, это поможет ... Не стесняйтесь, если у вас есть еще вопросы =)

Привет.

Ответы [ 4 ]

1 голос
/ 10 августа 2010

Я заметил, что вы спрашиваете о Flex 3 SDK. Скины это хороший подход. Они несколько изменились во Flex 4 (к лучшему ИМХО). Если вы хотите использовать API-интерфейс Flex Drawing, просто расширьте класс Box на пользовательский класс, который будет выглядеть примерно так:

public class MultiColorBorderBox extends Box
    {
                // You could add getters/setters or constructor parameters to be able to change these values.
            private var topColor:uint   = 0xFF0000;
            private var rightColor:uint = 0x00FF00;
            private var bottomColor:uint = 0x0000FF;
            private var leftColor:uint = 0xFF00FF;
            private var borderWidth:Number = 20;


        public function MultiColorBorderBox()
        {
            super();

        }

        override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
        {
            super.updateDisplayList(unscaledWidth, unscaledHeight);
            // This just ensures you dont have content under your border
            this.setStyle("paddingLeft", borderWidth);
            this.setStyle("paddingRight", borderWidth);
            this.setStyle("paddingTop", borderWidth);
            this.setStyle("paddingBottom", borderWidth);

            var g:Graphics = this.graphics;  // This creates a new Graphics object and sets it to the MultiColorBorderBox graphics object.  Since Box (superclass) descends from a Sprite object, it has a graphics object automatically.

            g.clear();
            g.moveTo(0,0);  // Moves the position to the top left corner
            g.lineStyle(borderWidth, topColor); // Sets the line style with the width and color
            g.lineTo(unscaledWidth, 0); // Draws the top border from top left to top right corners
            g.lineStyle(borderWidth, rightColor); // Changes the line style
            g.lineTo(unscaledWidth, unscaledHeight); // Draws the line from top right to bottom right
            g.lineStyle(borderWidth, bottomColor); //Changes the bottom border style
            g.lineTo(0, unscaledHeight); // Draws the line from bottom right to bottom left
            g.lineStyle(borderWidth, leftColor); // Changes the border color
            g.lineTo(0,0); // Closes the box by drawing from bottom left to top left            

        }
0 голосов
/ 12 августа 2010

Я наконец сделал довольно простую вещь. Я думаю, что я не был достаточно подробным в отношении спецификаций.

Фактической целью было создание навигатора с кнопками в форме стрелок. Каждая кнопка должна быть выделена, когда она была выбрана. И это http://www.freeimagehosting.net/uploads/bcd0d762d7.jpg, как выглядел навигатор.

Каждая кнопка на самом деле представляет собой HBox, содержащий Box (с меткой) и изображение (для наконечника стрелки), с HorizontalGap = 0.

Я не думал о добавлении светофильтра к кнопке. Поэтому я пытался просто изменить цвета верхней и нижней части коробки ...

Итак, световой фильтр в кнопке работал довольно хорошо.

Извините за отсутствие объяснений по поводу контекста> _ <И спасибо за ваши ответы !! </p>

Привет.

0 голосов
/ 09 августа 2010

Я не думаю, что Flex делает различие между верхними / нижними границами и левыми / правыми границами. Создание скина, безусловно, было бы изящным способом сделать это. Программным способом может быть использование box.graphics для рисования вашей границы вручную. Я бы начал с попытки переопределить функцию updateDisplayList (), чтобы нарисовать вашу границу ...

0 голосов
/ 09 августа 2010

Я почти уверен, что для этого вам нужно будет создать borderSkin .Я считаю, что они создаются во внешней программе, такой как Flash Professional;но больше информации в документации .

...