Питання 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!

Ми воювали. Я не пишаюся тим, що я сказав або робив. Врешті-решт, в піднесеній формі ярості, я повністю видалив усі посилання Дженіна. Вона була повністю, повністю стерта з системи. Мій курсор впав на меню "Порожній сміття", такий як холодна кришка скриньки.

Я не думаю, що Flash коли-небудь оговтався. До цього дня він все ще чіпляється до пам'яті Дженіна. Її старі, недосконалі визначення все ще плавають через мій проект, як покинуті привиди. Кожного разу, коли я змушу флеш-компіляцію, він все ще люб'язно вставляє її в мій фільм, прищеплюючи своє визначення серед інших, живих класів, як маленька святиня. Цікаво, чи зможуть вони її бачити.

Flash і я більше не говорю. Я пишу мій код, він його компілює. В місті названа Літня нова дівчина, яка виглядає майже ідентичною Дженіну, наче хтось щойно скопіював опір свого вихідного коду в новий клас, але Flash не виявив жодного інтересу. У більшості днів це просто спотворюється навколо і пише погану поезію в моїх коментарях, коли він вважає, що я не дивлячись.

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


2694
2018-02-03 17:32


походження




Відповіді:


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 видалити їх.


694
2018-02-03 18:49



Скопійовано знизу: це та інша, дуже подібна відповідь саме те, що я шукав, але, на жаль, не здається, вирішити цю проблему. Я збираюся це зробити до того, як веселі помилки Adobe. Однак, я хочу відзначити це як розв'язане. - Ender
PS: Я натискав елемент меню знову і знову. Я глибоко врізався в структуру файлу в квесті, щоб нарешті вилучити файли, що містять останній відгомін Jenine. Їх там немає. Коли я питаю про них, Флеш просто мимоволі щось незв'язаний і здивляється в космос. Я думаю, що я можу почати почути щось через шалений молотком моєї кнопки миші. Дженін сміється. - Ender
@Так, виникають ті самі проблеми, якщо ви нещодавно компілюєте код у новому вікні. Як свіжа перевірка коду на новий комп'ютер? Це має сказати вам, чи це проблема з кодом або тим, що триває твій файлова система*. - Jesse Webb


Спробуйте видалити ваші файли ASO.

Файли ASO - кешовані компіляційні версії файлів вашого класу. Хоча IDE набагато краще відмовляти від старих кешів при внесенні змін, іноді доводиться видаляти їх вручну. Щоб видалити файли ASO: Керування> Видалити файли ASO.

Це також є причиною появи помилки "I-am-not-see-my-changes-so-let-me-add-a-trace-now-everything-works", що було введено в CS3.


198
2018-02-03 18:40





Що робити, якщо ви скомпілюєте його за допомогою іншої машини? Свіжий встановлений буде чудово. я сподіваюсь ваша машина не ревнує


164
2018-02-03 20:25





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

Флеш перевіряє необхідність перекомпіляції вихідного файлу, переглядаючи мітки часу. Якщо його складена версія є старше ніж вихідний файл, він буде перекомпілювати. Але це не перевіряє, чи скомпільована версія була згенерована з того самого вихідного файлу чи ні.

Зокрема, якщо у вас є ваші файли actionscript під керуванням версії, і ви відновлять зміну, у поверненому файлі, як правило, буде старша позначка часу, і Flash буде ігнорувати його.


125
2018-02-03 18:04



Правда, я працюю над декількома проектами з розробниками з Південної Африки та Лондона. Коли ми передаємо флеш-файли назад і вперед, ми повинні зберегти його локально, оскільки компіляція спричинить шалену помилку на основі часової мітки файлу. По суті, це спроба скомпілювати спалах, яке було збережено в майбутньому. Ми зрозуміли це, змінивши нашу дату на нашій ОС. Спробуйте перевірити мітку часу. - Dominic Tancredi


Також, щоб використовувати ваш новий клас імен, ви також можете це зробити

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

102
2018-02-05 16:55





У вас є кілька SWF-файлів? Якщо ваш клас імпортується в одне з swf-файлів, інший swf також використовуватиме ту саму версію класу. Один старий імпорт з * в один swf зробить це. Перебудуйте все і подивіться, чи працює він.


96
2018-02-04 04:26



Так, я ставлю, що Jenine складається в іншу частину вашого коду, як swf, так і swc, який ви використовуєте. - Arpit


Використовуйте a grep аналог, щоб знайти рядки oldnamespace і Jenine всередині файлів у вашій папці проекту. Тоді ви б знали, який крок зробити далі.


10
2017-07-02 01:41



Моє власне здогадатися, чому ти понизив, - це те, що ви дали досить очевидну відповідь і настійно припускаєш, що це вирішить проблему. Ваша відповідь не обов'язково погана, але ваша фраза може бути інтерпретована як невиправдано надмірно конфесійна або нахабна, яка іноді згущує людей. - Erhannis
Хмм Може, ти правий. З іншого боку, це розчарування, коли питання не дає відповіді на очевидні питання, такі як моє. Щось на кшталт "Я шукав рядок Jenine у ​​всіх файлах, але не зміг знайти відповідність". Я заінтригований Я хочу розібрати цю таємницю. Але автор залишає мене висить. - Ark-kun
Як я вже сказав, ваша відповідь не обов'язково поганий; це може просто бути, що ваша фраза дратує когось. Чесно кажучи, це була моя перша реакція. Я взагалі намагаюся сказати речі у спосіб "сподіваюся, що це допоможе ", зважаючи на те, що так часто реальна причина речей - це не те, що ви думаєте. Знову ж, я згоден з вашою відповіддю є щось треба спробувати, а тому заслуговує на розгляд як подану відповідь, але фраза іноді впливає на людей більше, ніж вона повинна. - Erhannis