Вспышки CS4 отказывается отпустить

У меня есть Flash-проект, и у него много исходных файлов. У меня есть довольно часто используемый класс, называйте его Дженин. Недавно я (и, возможно, бессердечно) переместил Дженин из одного пространства имен в другое. Я думал, мы готовы , я думал, что пришло время. Новая Дженин была лучше во всех отношениях - она потеряла некоторый код, она отделила себя от нескольких рудиментарных отношений класса, и она, наконец, вернулась домой в пространство имен, которое она всегда тайно знала в своем сердце она действительно принадлежала. Она была среди себе подобных.

к сожалению, Flash не будет иметь ничего из этого. Возможно, у него сформировалась привязанность. А может, и нет!--4-->хочу Дженин будет отделена. В любом случае, он цеплялся за старую, идеальную версию Дженин в своей памяти. Он отказывался двигаться дальше. Он игнорировал ее (функциональные) вызовы. Он пытался забыть ее новые, общедоступные интерфейсы. Вместо этого каждый экземпляр Дженин, который он построил, всегда был копией старой версии, вплоть до путь к классу:

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, и я больше не разговариваю. Я пишу свой код, он его компилирует. В городе появилась новая девушка по имени Саммер, которая выглядит почти идентично Дженин, как будто кто-то скопировал ее исходный код оптом в новый класс, но Флэш не проявил никакого интереса. Большинство дней он просто хандрит и пишет плохие стихи в моих комментариях, когда думает, что я не смотрю.

Я надеюсь, что ни у кого больше не было подобного опыта, что это просто единственная, болезненная рябь в ужасающей темной Лагуне, которая является Флэш-кодом. Если, по какой-то случайности, у вас есть, или у вас есть идея, как стереть любой проклятый кэш, который использует компилятор, пожалуйста, пожалуйста, помогите.

7 ответов


Flash по-прежнему имеет файл ASO, который является скомпилированным байтовым кодом для ваших классов. В Windows вы можете увидеть файлы ASO здесь:

C:\Documents and Settings\username\Local Settings\Application Data\Adobe\Flash CS4\en\Configuration\Classes\aso

на Mac, структура каталогов, аналогичная в /Users/username/Library/Application Support/


вы можете удалить эти файлы вручную, или в Flash, вы можете выбрать Control->Delete ASO files, чтобы удалить их.


Попробуйте удалить файлы ASO.

файлы АСО кэшируются скомпилированые файлы классов. Хотя IDE намного лучше отпускает старые кэши при внесении изменений, иногда вам приходится вручную удалять их. Чтобы удалить файлы ASO: управление>удалить файлы ASO.

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


Что делать, если вы скомпилировать его с помощью другой машины? Свежий установленный был бы прекрасен. Надеюсь машины не ревнует.


Я нашел одно связанное поведение, которое может помочь (похоже, ваша конкретная проблема глубже):

Flash проверяет, требуется ли перекомпиляция исходного файла, просматривая метки времени. Если его скомпилированная версия старше чем исходный файл, он будет перекомпилировать. Но он не проверяет, была ли скомпилированная версия сгенерирована из того же исходного файла или нет.

в частности, если у вас есть файлы actionscript под контролем версий, и вы Отменить изменение, возвращенный файл обычно будет иметь более старую метку времени, и Flash будет игнорировать его.


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

var jenine:com.newnamespace.subspace.Jenine = com.newnamespace.subspace.Jenine()

У вас есть несколько swf-файлов? Если ваш класс импортируется в один из swf, другие swf также будут использовать ту же версию класса. Один старый импорт с * в одном swf сделает это. Перекомпилируйте все и посмотрите, работает ли это.


использовать grep аналоговый, чтобы найти строки oldnamespace и Jenine внутри файлов во всей папке проекта. Тогда бы ты знал, что делать дальше.