Я добавил стандартный компонент Flash ComboBox в свой проект CS3 (AS2). Это часть одного из моих символов библиотеки, а не созданная на сцене.
Я не внес никаких изменений в скины, исходный код и т. Д. ComboBox.
Когда пользователь нажимает на ComboBox, список выпадает из списка, пользователь использует мышь для выбора элемента, и этот элемент передается в код, который воздействует на него.
В Flash IDE все работает нормально. Но когда я развертываю это на веб-сайте и просматриваю страницу Flash через веб-браузер, когда пользователь щелкает значение в раскрывающемся списке, в поле ввода вводится другое значение. (Я использую Firefox 3.0.12 на MAC, но наш QA видит проблему в других браузерах и версиях). Это же неверное значение также передается моему обратному вызову события изменения.
Проблема очевидна для Flash Player 9 и 10.
Я попробовал два способа получить значение из ComboBox.
а) Прямой доступ к компоненту, чтобы получить выбор. При использовании этого подхода, если пользователь использует клавиатуру для непосредственного выбора значения типа ИЛИ в числе, он работает в IDE и браузере. Не удается выбрать только мышь.
var num_pages_value:Number = Number(num_pages.num_pages_cb.selectedItem["data"]);
б) Использование обработчика событий. При использовании этого подхода доступ к ComboBox с клавиатуры перестает работать. Вот как я настраиваю обработчик событий:
var cb: ComboBox = num_pages.num_pages_cb;
// Без mx.events.EventDispatcher.initialize событие изменения никогда не запускается !!!
// Не в документах. Выглядело так трудно, чтобы выяснить это ...
mx.events.EventDispatcher.initialize (cb);
cb.addEventListener («изменить», это);
Вот сам обработчик события.
изменение функции (evt) {
num_pages_value = Number (evt.target.selectedItem.label);
}
Я подозреваю, что вызов mx.events.EventDispatcher.initialize нарушает взаимодействие с клавиатурой, но без него мой обработчик никогда не вызывается. Но ни один из подходов не позволяет пользователю выбрать желаемое значение. Выберите 7, и вы получите 9, выберите 3, и вы получите 6. И ценность, которую вы получаете, не всегда одинакова.