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

У меня есть 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!

Мы сражались. Я не горжусь некоторыми вещами, которые я сказал или сделал. В конце концов, в высшей степени ярости, я полностью удалил все ссылки Дженины. Она была полностью, полностью стерта из системы. Мой курсор упал на пункт меню "Empty Trash", например, холодная крышка шкатулки.

Я не думаю, что Flash когда-либо восстанавливался. По сей день он все еще цепляется за память о Дженине. Ее старые, несовершенные определения все еще плавают в моем проекте, как заброшенные призраки. Всякий раз, когда я заставляю Flash компилироваться, он все еще с любовью вставляет ее в мой фильм, устраивая ее определение среди других, живых классов, как небольшая святыня. Интересно, могут ли они увидеть ее.

Flash, и я больше не говорю. Я пишу свой код, он компилирует его. Там новая девушка в городе по имени Лето, которая выглядит почти идентично Дженине, как будто кто-то просто скопировал ее исходный код в новый класс, но Flash не проявил никакого интереса. В большинстве дней он просто мешает и пишет плохие стихи в своих комментариях, когда он думает, что я не смотрю.

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

2657
03 февр. '10 в 20:32
источник поделиться
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, чтобы удалить их.

680
03 февр. '10 в 21:49
источник

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

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

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

195
03 февр. '10 в 21:40
источник

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

162
03 февр. '10 в 23:25
источник

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

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

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

125
03 февр. '10 в 21:04
источник

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

var jenine:com.newnamespace.subspace.Jenine = com.newnamespace.subspace.Jenine()
102
05 февр. '10 в 19:55
источник

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

96
04 февр. '10 в 7:26
источник

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

10
02 июля '13 в 4:41
источник

Посмотрите другие вопросы по меткам или Задайте вопрос