Флэш CS4 отказывается отпускать

flash caching flash-cs4


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

К сожалению, у 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 кодовой базой.Кто-нибудь знает,как стереть кэш,который использует компилятор?




Answer 1 wpjmurray


Во 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 чтобы удалить их.




Answer 2 Magocto


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

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

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




Answer 3 Rodrigo Strauss


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




Answer 4 Laurie Cheers


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

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

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




Answer 5 Arpit


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

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