гибкий комбинированный список со стрелкой - PullRequest
1 голос
/ 20 июля 2010

В моем приложении Flex AIR я должен настроить Combobox с помощью пользовательского значка стрелки. Я получил свойства, чтобы изменить его цвет, но не получил никакого свойства, чтобы изменить сам значок. После Googling я получил несколько ссылок по скину комбобокса, но они были для FLASH CS4, но я на Flex.

Не получается никакого решения. Пожалуйста, помогите.

Заранее спасибо.

Вот код:

<?xml version="1.0" encoding="utf-8"?><mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Style>
    ComboBox {
        up-skin :  Embed(source="Pulldown_def.png");
        down-skin : Embed(source="Pulldown_def.png");
        over-skin : Embed(source="Pulldown_def.png");       
    }
</mx:Style>
<mx:Array id="dp">
    <mx:Object label="test1" />
    <mx:Object label="test2" />
</mx:Array>
<mx:ComboBox id="cbx" x="51" y="43" dataProvider="{dp}" labelField="label" ></mx:ComboBox>

Это не работает для меня :( Он наносит изображение на весь Combobox. Мне нужно заменить изображение стрелки. Я что-то не так делаю?

Ответы [ 2 ]

0 голосов
/ 21 марта 2014

По умолчанию ComboBoxArrowSkin рисует ВСЁ ComboBox.У самой иконки нет атрибута стиля - вам придется написать свой собственный скин.Прочтите ComboBox.as и ComboBoxArrowSkin.as, и вы увидите, что там происходит.Это ужасно.Я бы подумал о том, чтобы вывести свой собственный класс из ComboBoxArrowSkin и настроить рисунок со стрелкой самостоятельно.Это происходит в конце updateDisplayList():

// Draw the triangle.
g.beginFill(arrowColor);
g.moveTo(w - 11.5, h / 2 + 3);
g.lineTo(w - 15, h / 2 - 2);
g.lineTo(w - 8, h / 2 - 2);
g.lineTo(w - 11.5, h / 2 + 3);
g.endFill();
0 голосов
/ 20 июля 2010

Вы можете создать собственный скин и установить атрибуты стиля skin, upSkin, downSkin и overSkin ComboBox для этого класса.Значением по умолчанию является ComboBoxArrowSkin

...