У меня есть проект Flash, и у него много исходных файлов. У меня довольно популярный класс, назовите его Дженин. Я недавно (и, возможно, бессердечно) перевез Дженин из одного пространства имен в другое. Я думал, что мы были готовы - я думал, что пришло время. Новая Дженина была лучше во всех отношениях - она потеряла часть кода, она развязала себя от нескольких рудиментарных классовых отношений, и, наконец, она вернулась домой в пространство имен, которое она всегда тайно знала в своем сердце, - это то, что она действительно принадлежал. Она была в своем роде.
К сожалению, у Flash этого не было. Возможно, это сформировало приложение. Возможно, он не хотел, чтобы Дженин была отделена. Так или иначе, это цеплялось за старую, прекрасную версию Дженин в ее памяти. Он отказался двигаться дальше. Он игнорировал ее (функцию) вызовов. Он пытался забыть ее новые общедоступные интерфейсы. Вместо этого каждый экземпляр Jenine, который он создавал, всегда был копией старой версии вплоть до ее пути к классу:
var jenineInstance:Jenine = new Jenine();
trace( getQualifiedClassName(jenineInstance));
// Should print: com.newnamespace.subspace::Jenine
// Prints: com.oldnamespace.subspace::Jenine
// Ah, young love!
Мы боролись. Я не горжусь некоторыми вещами, которые я сказал или сделал. В конце, в ярости, я полностью удалил все упоминания о Дженине. Она была полностью, полностью стерта из системы. Мой курсор упал на пункт меню «Пустая корзина», как на холодную крышку гроба.
Я не думаю, что Flash когда-либо выздоровел. По сей день это все еще цепляется за память о Дженине. Ее старые, несовершенные определения все еще плавают в моем проекте, как заброшенные призраки. Всякий раз, когда я заставляю Flash скомпилировать, он все равно с любовью вставляет ее в мой фильм, укореняя ее определение среди других живых классов, как маленький храм. Интересно, смогут ли они ее увидеть?
Флэш и я больше не разговариваю. Я пишу свой код, он компилирует его. В городе есть новая девушка по имени Саммер, которая выглядит почти идентично Дженин, как будто кто-то просто скопировал ее исходный код оптом в новый класс, но Flash не проявил никакого интереса. В большинстве случаев он просто шутит и пишет плохие стихи в моих комментариях, когда думает, что я не смотрю.
Я надеюсь, что ни у кого не было подобного опыта, что это просто необычная, болезненная рябь в ужасающей темной лагуне, которая является базой кода Flash. У кого-нибудь есть идеи, как стереть кеш, который использует компилятор?
Попробуйте удалить файлы ASO.
ASO файлы - это кешированные скомпилированные версии ваших файлов классов. Несмотря на то, что среда IDE намного лучше освобождает старые кэши при внесении изменений, иногда их приходится удалять вручную. Чтобы удалить файлы ASO: «Управление»> «Удалить файлы ASO».
Это также является причиной ошибки «Я не вижу мои изменения, поэтому давайте мне добавлю, что теперь все работает», которая была представлена в CS3.
источник
Что если вы скомпилируете его с помощью другой машины? Свежий установленный был бы прекрасен. Надеюсь твоя машина не ревнует.
источник
Я нашел одно связанное поведение, которое может помочь (звучит так, будто ваша конкретная проблема работает глубже):
Flash проверяет необходимость перекомпиляции исходного файла, просматривая временные метки. Если его скомпилированная версия старше исходного файла, он будет перекомпилирован. Но он не проверяет, была ли скомпилированная версия сгенерирована из того же исходного файла или нет.
В частности, если у вас есть файлы ActionScript, находящиеся под управлением версией, и вы отменили изменение, то возвращенный файл обычно будет иметь более старую временную метку, и Flash ее проигнорирует.
источник
Кроме того, чтобы использовать ваш новый класс пространства имен, вы также можете сделать
источник
У вас есть несколько SWF-файлов? Если ваш класс импортирован в один из SWF-файлов, другие SWF-файлы также будут использовать ту же версию класса. Один старый импорт с * в одном SWF сделает это. Перекомпилируйте все и посмотрите, работает ли это.
источник
Используйте
grep
аналог, чтобы найти строкиoldnamespace
иJenine
файлы внутри всей вашей папки проекта. Тогда бы вы знали, что делать дальше.источник