Flash CS4 nie chce odpuścić

Mam projekt Flash, i ma wiele plików źródłowych. Mam dość często używane zajęcia, nazwij Jenine. Niedawno (i być może bezdusznie) przeniosłem Jenine z jednej przestrzeni nazw do drugiej. Myślałem, że już czas. Nowa Jenine była lepsza pod każdym względem - straciła pewien nadęty kod, odłączyła się od kilku szczątkowych związków klasowych, a w końcu wróciła do przestrzeni nazw, którą zawsze sekretnie znała w swoim sercu naprawdę należy. Należała do swego rodzaju.

Niestety, Flash by tego nie miał. Być może to było przywiązanie. Być może nie chciało Jenine być oddzielone. Tak czy inaczej, przylgnęła do starej, doskonałej wersji Jenine w swojej pamięci. Nie chciał iść dalej. Zignorował wywołania funkcji. Starała się zapomnieć o jej nowych, publicznych interfejsach. Zamiast tego każda instancja Jenine, którą skonstruował, była zawsze kopią starej wersji, aż do jej classpath:

var jenineInstance:Jenine = new Jenine();
trace( getQualifiedClassName(jenineInstance));
// Should print: com.newnamespace.subspace::Jenine
// Prints: com.oldnamespace.subspace::Jenine
// Ah, young love!
Walczyliśmy. Nie jestem dumny z niektórych rzeczy, które powiedziałem lub zrobiłem. W końcu, w przypływie wściekłości, całkowicie usunąłem wszystkie odniesienia do Jenine. Została całkowicie wymazana z systemu. Mój kursor spadł na opcję menu "pusty kosz", jak zimna pokrywa trumny. Nie sądzę, żeby Flash kiedykolwiek wyzdrowiał. Do dziś pozostaje w pamięci Jenine. Jej stare, niedoskonałe definicje wciąż krążą po moim projekcie jak opuszczone duchy. Ilekroć zmuszam Flasha do kompilacji, wciąż z miłością wkłada ją do mojego filmu, umieszczając jej definicję wśród innych, żywych klas, jak mała kapliczka. Ciekawe, czy ją widzą. Flash i ja już nie rozmawiamy. Ja piszę mój kod, on go kompiluje. W mieście jest nowa dziewczyna o imieniu Summer, która wygląda prawie identycznie jak Jenine, jakby ktoś skopiował jej kod źródłowy do nowej klasy, ale Flash nie wykazał zainteresowania. Większość dni to po prostu mops wokół i pisze złe wiersze w moich komentarzach, kiedy myśli, że nie patrzę.

Mam nadzieję, że nikt inny nie miał podobnego doświadczenia, że jest to tylko pojedyncze, bolesne tętnienie w przerażającej ciemnej lagunie, która jest bazą kodu Flash. Jeśli przypadkiem masz, lub masz jakiś pomysł, jak wymazać cholerną pamięć podręczną, której używa kompilator, Proszę, proszę o pomoc.

Author: Lightness Races in Orbit, 2010-02-03

7 answers

Flash nadal ma plik ASO, który jest skompilowanym kodem bajtowym dla Twoich klas. W systemie Windows możesz zobaczyć pliki ASO tutaj:

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

Na komputerze Mac struktura katalogów jest podobna w /Users/username/Library/Application Support/


Możesz usunąć te pliki ręcznie lub w programie Flash możesz wybrać Control->Delete ASO files, aby je usunąć.

 697
Author: wpjmurray,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-22 09:46:49

Spróbuj usunąć Pliki ASO.

Pliki ASO to buforowane skompilowane wersje plików twojej klasy. Chociaż IDE jest o wiele lepsze w puszczaniu starych pamięci podręcznych po wprowadzeniu zmian, czasami trzeba ręcznie je usunąć. Aby usunąć Pliki ASO: Control>Usuń pliki ASO.

Jest to również przyczyna błędu" nie-widzę-moich-zmian-więc-pozwól-mi-dodać-ślad-teraz-wszystko-działa", który został wprowadzony w CS3.

 198
Author: Magocto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-03 18:56:25

Co jeśli skompilujesz go na innym komputerze? Świeży zainstalowany byłby piękny. Mam nadzieję, że Twoja maszyna nie jest zazdrosna.

 164
Author: Rodrigo Strauss,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-03 20:25:09

Znalazłem jedno podobne zachowanie, które może pomóc (brzmi, jakby twój konkretny problem był głębszy):

Flash sprawdza, czy plik źródłowy wymaga rekompilacji, patrząc na znaczniki czasu. Jeśli jego skompilowana wersja jest starsza niż plik źródłowy, przekompiluje się. Nie sprawdza jednak, czy skompilowana wersja została wygenerowana z tego samego pliku źródłowego.

W szczególności, jeśli posiadasz pliki actionscript pod kontrolą wersji i cofasz zmianę, zwracany plik zwykle będzie miał starszy znacznik czasu, a Flash go zignoruje.

 125
Author: Laurie Cheers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-03 18:04:35

Ponadto, aby użyć nowej klasy z przestrzenią nazw, możesz również wykonać

var jenine:com.newnamespace.subspace.Jenine = com.newnamespace.subspace.Jenine()
 103
Author: Arpit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-05 16:55:14

Czy masz kilka plików swf? Jeśli klasa jest importowana w jednym z plików swf, inne pliki swf również będą używać tej samej wersji klasy. Wystarczy jeden stary import z * w jednym pliku swf. Przekompiluj wszystko i sprawdź, czy działa.

 97
Author: Dave,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-04 04:26:16

Użyj grep analog, aby znaleźć ciągi oldnamespace i Jenine wewnątrz plików w całym folderze projektu. Wtedy wiedziałbyś, co zrobić dalej.

 11
Author: Ark-kun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-01 22:05:49