Проблемы с использованием SWC, содержащих символы с перекрывающимися именами

#flash #actionscript-3 #swc

#flash #actionscript-3 #swc

Вопрос:

Я создаю проект AS3, который содержит различные SWCS, предоставленные мне третьей стороной. Эти SWC поступают из 2 разных FLA, но некоторые из экспортированных символов в этих FLA имеют одинаковую структуру / имена символов.

Когда я использую оба этих SWC, символы внутри теряют свой actionscript (например, Flash игнорирует stop()). Если я удалю один из этих SWC из пути к библиотеке, ресурсы из другого SWC будут работать на 100% нормально.

Мне нужно использовать оба этих SWCS. Кто-нибудь может предложить решение?

Ответ №1:

Если вы не можете перестроить хотя бы один из файлов swc и переименовать вещи в его библиотеке, то единственное, что я могу придумать, — это когда вы ссылаетесь на них, используя их полное пространство имен, а не только их имя класса. Это распространенное решение, используемое и в других языках ООП.

Для каждого примера у вас есть 2 класса / библиотечных элемента, и оба они называются «Пицца». Если для одного вы используете import com.eastcoast.* , а для другого вы используете import com.westcoast.* , то вместо того, чтобы просто сказать что-то вроде

var pepperoiniPizza:Pizza = new Pizza();

Вы бы сказали

var pepperoiniPizza:com.eastcoast.Pizza = new com.eastcoast.Pizza();

Дайте мне знать, если это сработает.

Комментарии:

1. Эти классы генерируются Flash, а не мной. Они являются пакетом по умолчанию. Экспорт символов также отличается, но происходит что-то еще. Например, если я экспортирую один SWC из Flash, то его ресурсы работают нормально, а ресурсы другого — нет. Как только я экспортирую другой SWC, они переворачиваются — последний экспортированный работает нормально. Под «не работает нормально» я имею в виду только то, что часть кода внутри MovieClips игнорируется. Сами ресурсы отображаются нормально.

2. Ha! Я исправил это. Изменение имен FLA и последующая перекомпиляция SWCS сделали свое дело. Странно.