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 и подобных вещей.

2 ответа

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам