Назначение значков в список ComboBox с использованием динамически загружаемых внешних изображений - PullRequest
0 голосов
/ 05 февраля 2010

Я пытаюсь реализовать это специально для экземпляра ComboBox, который использует List для отображения выпадающего меню, полного пунктов. Списки могут иметь значки, связанные с ними, как описано в документации :

var comboBox = addChild(new ComboBox());
comboBox.dataProvider = new DataProvider([{label:'item1',iconClass:IconClass1},{label:'item2',iconClass:IconClass2}]);
comboBox.dropdown.iconField = 'iconClass';

... при условии, что IconClass1 и IconClass2 являются допустимыми именами классов символов в нашей библиотеке, этот код работает отлично.

Вот мой вопрос - содержимое этого ComboBox будет управляться XML, заполняться динамически, и я действительно предпочел бы включить эту ссылку на значок в качестве имени файла вместо имени класса, чтобы, когда все Что-то реализовано, значок можно изменить в XML, не открывая Flash и не добавляя новый символ в библиотеку. Клиенты, как правило, не очень хороши в этом.

В идеале я хотел бы найти способ ссылаться на контейнер для экземпляра этого класса значков - ComboBox.dropdown, очевидно, где-то хранит ссылку на каждый элемент списка, и, если я могу его найти, Я могу загружать изображения значков динамически, а затем добавлять их в экземпляр значка. Видишь, что я говорю?

Возможно ли это? Есть ли другой хитрый способ сделать это?

1 Ответ

1 голос
/ 05 февраля 2010

Я не пробовал, но я бы предположил, что вы можете просто использовать базовый пользовательский класс, скажем ImageIconField, который вы будете создавать для каждого изображения, передавать с данными в DataProvider и устанавливать iconField. Вот так:

var customImageIcon:ImageIconField;
var dataProviderArr:Array = [];
for (var node:XML in xml_data.children()) {
    customImageIcon = new ImageIconField();
    customImageIcon.loadFromFile(node.@icon_path.toString());
    dataProviderArr.push({label:xml_data.@label.toString, iconClass:customImageIcon})
}
combobox.dropdown.iconField = 'iconClass';
combobox.dataProvider = new DataProvider(dataProviderArr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...