проблема выпадающего списка в выпадающем списке при загрузке SWF-файла AS2 во Flex - PullRequest
0 голосов
/ 04 марта 2010

Я нашел проблему со списком выпадающих списков в SWF-файле AS2.

Мой сценарий: Существует несколько SWF-файлов, которые были скомпилированы из ActionScript2.0 и используют Flex для загрузки этих SWF-файлов в компонент swfLoader.

Есть две проблемы, которые я нашел и не могу решить: 1. Когда я загружаю несколько SWF-файлов as2.0 в одно Flex-приложение, первый загруженный файл будет работать отлично, но у второго и т. Д. Будут проблемы. Когда я нажимаю на их компонент со списком, выпадающий список не показывался. 2. SWF-файл, который не был загружен первым, также имеет проблемы с всплывающим окном. Когда всплывающее окно показывало, что оно не может работать должным образом, я не могу выполнять над ним какие-либо операции, такие как нажатие кнопки, закрытие всплывающего окна и т. Д.

Я решаю это, добавив пустой SWF-файл AS2.0 содержимого в flex, чтобы он был первым загруженным SWF-файлом, и это делает что-то странное: когда я нажимаю кнопку в выпадающем списке, появляется выпадающий список, но он появляется в позиции ( x: 0, y: 0) своего контейнера.

Я также добавляю код:

this._lockroot = true;

в каждом коде ActionScript2.0, но это не решает проблему.

Я не знаю источника проблемы.

Пожалуйста, помогите мне.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 02 июля 2010

Джеймс и другие, я решил проблему с помощью жесткого кода swapDepths мувиклип контейнера. например, если ваш comboBox находится внутри mc_container, поэтому, когда вы его создаете (или если он уже находится на стадии), выполните mc_container.swapDepths (1) для as2 или mc_container.setChildIndex (mc_container, 1) для AS3

0 голосов
/ 05 марта 2010

Извините за мою ошибку, это деталь, которую я реализовал.

Во Flex я использую строку кода для загрузки пяти файлов .swf

swfBase = new SWFLoader (); swfBase.load ( "активы / base.swf"); mainView.addChild (swfBase); swfTreatmentPlan1 = новый SWFLoader (); swfTreatmentPlan1.load ( "активы / TreatmentPlan1.swf"); swfOverview = новый SWFLoader (); swfOverview.load ( "активы / Overview.swf"); swfTreatmentPlan2 = новый SWFLoader (); swfTreatmentPlan2.load ( "активы / TreatmentPlan2.swf"); swfCharLib = новый SWFLoader (); swfCharLib.load ( "активы / CharacteristicLib.swf");

Когда я хочу поменять файл .swf для отображения на экране Flex, я использую эту логику:

приватная функция menuChange (событие: событие): пусто { var selectedNode: XML = Tree (event.target) .selectedItem как XML var data: String = selectedNode. @ data.toString ();

mainView.removeChild (currSWF);

currSWF = это [данные] как SWFLoader;

mainView.addChild (currSWF); }

mainView - это Canvas, который используется для показа .swf файла.

Я использую LocalConnection для обработки связи между Flex и swf-файлом ActionScript2.0.

Для ActionScript2.0 я буду использовать этот код для создания ComboBox.

this.createClassObject (ComboBox, "selArchived", this.getNextHighestDepth ()); selArchived.setSize (130, 22); selArchived.move (__x + 7, __y + 35); selArchived.addEventListener («изменить», Delegate.create (this, objArchivedChange));

и я назначаю поставщик данных для выпадающего списка следующим образом:

this.selArchived.dataProvider = arrTmp;

вот и все.

И в каждом коде ActionScript2.0 я использую этот простой механизм для создания комбо-блока.

Спасибо

...