Вопрос: 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 не проявил никакого интереса. В большинстве дней он просто сгибается и пишет плохие стихи в своих комментариях, когда думает, что я не смотрю.

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


2688


источник


Ответы:


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


692



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

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

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


198



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


164



I have found one related behaviour that may help (sounds like your specific problem runs deeper though):

Flash checks whether a source file needs recompiling by looking at timestamps. If its compiled version is older than the source file, it will recompile. But it doesn't check whether the compiled version was generated from the same source file or not.

Specifically, if you have your actionscript files under version control, and you Revert a change, the reverted file will usually have an older timestamp, and Flash will ignore it.


125



Also, to use your new namespaced class you can also do

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

102



Do you have several swf-files? If your class is imported in one of the swf's, other swf's will also use the same version of the class. One old import with * in one swf will do it. Recompile everything and see if it works.


96



Use a grep analog to find the strings oldnamespace and Jenine inside the files in your whole project folder. Then you'd know what step to do next.


10