AS3 - ReferenceError при создании экземпляра объекта во внешнем SWF

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

Я использую flash Builder, и каждый SWF-файл представляет собой отдельный проект. Для внешнего swf-файла настроен путь сборки, связанный с основным swf-файлом, поэтому внешний swf-файл имеет доступ ко всем классам основного swf-файла.

Проблема в том, что когда я пытаюсь создать экземпляр одного из классов, определенных в основном swf, он выдает ошибку ReferenceError:

ReferenceError: Ошибка № 1065: переменная GraphicRadioButton не определена.

Когда основной swf загружает второй swf, он загружается нормально, и я могу взаимодействовать с кнопками и прочим из внешнего swf. Но когда я нажимаю кнопку, которая приводит к созданию экземпляра этого класса GraphicRadioButton, я получаю эту ошибку времени выполнения. Вот точная строка кода, которая вызывает ошибку (не обращайте внимания на параметры, я считаю, что они не имеют ничего общего с этой проблемой):

maleGenderButton = new GraphicRadioButton(genderButtonGroup, nameInputRightBorder.x + nameInputRightBorder.width + 50,nameInputRightBorder.y, LoginAssets.MALE_GENDER, LoginAssets.MALE_GENDER_OVER, LoginAssets.MALE_GENDER_DOWN);

И эта ошибка возникает после создания экземпляров некоторых других классов, и эти другие классы также связаны из проекта основного swf, поэтому проблема конкретно в этом классе GraphicRadioButton.

И последняя важная информация. Когда я запускаю exernal swf сам по себе, ошибка не выдается, все работает нормально. Ошибка возникает только тогда, когда swf запускается как внешний swf, который загружается из другого swf с использованием Loader, URLRequest и прочего.


person Felipe Müller    schedule 30.09.2014    source источник
comment
Вы используете один и тот же пакет для всех классов? если нет, то включите каждый требуемый пакет. Пожалуйста, предоставьте ZIP-файл или код, чтобы я мог иметь представление о потоке, который вы используете для реализации своих функций.   -  person Ronnie Depp    schedule 01.10.2014
comment
Я даже могу помочь вам с помощью TeamViewer. Я эксперт по Adobe Flex. Для разработки я использую Flash Builder 4.6.   -  person Ronnie Depp    schedule 01.10.2014
comment
Что именно вы имеете в виду, говоря о каждом пакете?   -  person Felipe Müller    schedule 03.10.2014
comment
Я не могу поделиться всем кодом, потому что я работаю в компании, которая опасается делиться кодом компании с другими людьми. Но если вы хотите помочь мне с Team Viewer, думаю, проблем не возникнет, и я буду счастлив   -  person Felipe Müller    schedule 03.10.2014


Ответы (2)


@felipe Правильно ли вы импортируете пакеты классов?

перед созданием объектов убедитесь, что вы правильно импортируете класс GraphicRadioButton.

пожалуйста, опубликуйте больше кода, чтобы я мог понять, как вы структурируете свое приложение.

person Ronnie Depp    schedule 01.10.2014
comment
Я не вижу ничего плохого в импорте. Я связываю другой проект в flash Builder, щелкнув правой кнопкой мыши на Project ›Properties› Actionscipt Build Path ›Вкладка Source Path› Add Folder. Этот другой связанный проект имеет пакет user_interface.buttons. Затем, когда я импортирую, я просто импортирую user_interface.buttons.TextComposedButton - person Felipe Müller; 03.10.2014

Я проверил еще кое-что и обнаружил, что на самом деле проблема в getQualifiedClassName (). В том классе, который я создавал, один из его суперклассов имеет эту строку в конструкторе

_class = Class(getDefinitionByName(getQualifiedClassName(this)));

Сначала мне нужно сказать одну вещь: я переместил кучу классов из одного проекта в другой (и один из этих классов был GraphicRadioButton), и этот другой проект также связан с проектом, который выдает ошибку. . Как только я это сделал, GraphicRadioButton больше не выдает ошибок, но теперь выдает другой класс.

Этот другой класс назывался ComposedTextButton, но я переименовал его в TextComposedButton (с помощью инструмента переименования в flash Builder, который обновляет все его ссылки), но ошибка продолжает говорить ...

ReferenceError: Ошибка № 1065: переменная ComposedTextButton не определена.

... хотя я изменил имя на TextComposedButton. Так что должно быть что-то, что не обновляется в одном из моих проектов, из-за чего flash не понимает, что класс был изменен, или перемещен, или что-то в этом роде.

person Felipe Müller    schedule 03.10.2014