Pytanie Flash CS4 nie chce odejść


Mam projekt Flash i ma wiele plików źródłowych. Mam dość ciężko używaną klasę, nazywam ją Jenine. Niedawno (i, być może, bezczelnie) przeniosłem Jenine z jednej przestrzeni nazw do drugiej. Myślałem, że jesteśmy gotowi - myślałem, że nadszedł czas. Nowa Jenine była lepsza pod każdym względem - straciła trochę kodu, oddzieliła się od kilku szczątkowych związków w klasie, i w końcu wróciła do przestrzeni nazw, którą zawsze sekretnie znała w swoim sercu. należy do. Była w swoim rodzaju.

Niestety Flash nie miałby tego. Być może utworzyło to przywiązanie. Być może nie chcieć Jenine rozłącza się. Tak czy inaczej, przylgnęła do starej, doskonałej wersji Jenine w swojej pamięci. Nie chciał iść dalej. Zignorowano jej wywołania (funkcji). Próbowała zapomnieć o swoich nowych, publicznych interfejsach. Zamiast tego każde wystąpienie Jenine, które skonstruował, było zawsze kopią starej wersji, aż do jej klasy:

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 potężnym szale, całkowicie usunąłem wszystkie odniesienia do Jenine. Była całkowicie wymazana z systemu. Mój kursor padł na opcję menu "Opróżnij Kosz", tak jak zimna pokrywa trumny.

Nie sądzę, żeby Flash kiedykolwiek powrócił do zdrowia. Do dziś przylega do pamięci Jenine. Jej stare, niedoskonałe definicje wciąż przepływają przez mój projekt jak opuszczone duchy. Za każdym razem, gdy zmuszam Flasha do kompilacji, wciąż z miłością wstawiam ją do mojego filmu, umieszczając jej definicję wśród innych, żywych klas, jak małą kapliczkę. Zastanawiam się, czy oni ją widzą.

Flash i nie mówię już więcej. Piszę swój kod, on go kompiluje. W miasteczku jest nowa dziewczyna, która wygląda prawie identycznie jak Jenine, jakby ktoś właśnie skopiował jej kod źródłowy do nowej klasy, ale Flash nie okazał zainteresowania. Przez większość czasu to po prostu kręci się wokół i pisze złe poezje w moich komentarzach, kiedy myśli, że nie patrzę.

Mam nadzieję, że nikt inny nie miał podobnego doświadczenia, że ​​jest to pojedyncza, bolesna fala w przerażającej ciemnej lagunie, która jest bazą kodu Flash. Jeśli masz jakąś szansę, lub masz pomysł, jak wymazać cholerną pamięć podręczną, której używa kompilator, proszę, pomóż.


2694
2018-02-03 17:32


pochodzenie




Odpowiedzi:


Flash nadal ma plik ASO, który jest skompilowanym kodem bajtu dla twoich zajęć. 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 we Flashu możesz wybrać Control->Delete ASO files je usunąć.


694
2018-02-03 18:49



Skopiowane od dołu: Ta i druga, bardzo podobna odpowiedź są dokładnie tym, czego szukałem, ale niestety nie wydaje się, aby rozwiązać problem. Zamierzam naszkicować tę wersję do Adobe fun fun tiem. Ale mam zamiar oznaczyć to jako rozwiązane. - Ender
PS: W kółko klikałem pozycję menu. Pogrążyłem się głęboko w strukturze plików, aby w końcu zniszczyć pliki zawierające ostatnie echa Jenine. Nie ma ich tam. Kiedy o nie pytam, Flash mruczy coś niespójnego i patrzy w przestrzeń. Myślę, że mogę zacząć słyszeć coś o szalonym uderzaniu mojego przycisku myszy. Jenine się śmieje. - Ender
@Ender, czy napotkasz ten sam problem, jeśli świeżo skompilujesz kod na nowym polu. Jak świeże wypisanie kodu na nowy komputer? To powinno Ci powiedzieć, czy jest to problem z kodem, czy też z pozostałymi problemami Twój system plików*. - Jesse Webb


Spróbuj usunąć swoje pliki ASO.

Pliki ASO są buforowanymi skompilowanymi wersjami plików klas. Chociaż IDE jest o wiele lepszy w odpuszczaniu starych pamięci podręcznych po wprowadzeniu zmian, czasami trzeba je ręcznie usunąć. Aby usunąć pliki ASO: Kontrola> Usuń pliki ASO.

Jest to również przyczyną błędu "Nie widzę-my-zmiany-tak-pozwól-dodaj-a-śledzenia-teraz-wszystko-działa", który został wprowadzony w CS3.


198
2018-02-03 18:40





Co jeśli skompilujesz go używając innego komputera? Świeżo zainstalowany byłby piękny. mam nadzieję twoja maszyna nie jest zazdrosny.


164
2018-02-03 20:25





Znalazłem jedno podobne zachowanie, które może pomóc (brzmi jak twój konkretny problem działa głębiej):

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

W szczególności, jeśli masz pliki actionscript w ramach kontroli wersji i cofasz zmianę, przywrócony plik będzie zwykle miał starszą sygnaturę czasową, a Flash ją zignoruje.


125
2018-02-03 18:04



To prawda, pracuję nad kilkoma projektami z programistami z RPA i Londynu. Kiedy przekazujemy pliki flash tam i z powrotem, musimy zapisać je lokalnie, ponieważ kompilacja spowoduje szalony błąd na podstawie znacznika czasu pliku. Zasadniczo problemem jest próba skompilowania pamięci flash, która została zapisana w przyszłości. Zorientowaliśmy się, zmieniając datę na naszych systemach operacyjnych. Spróbuj sprawdzić swój znacznik czasu. - Dominic Tancredi


Ponadto, aby użyć nowej klasy z przypisanymi nazwami, możesz również zrobić

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

102
2018-02-05 16:55





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


96
2018-02-04 04:26



Tak, obstawiam, Jenine jest wkompilowana w inną część twojego kodu, albo swf, albo swc, którego używasz. - Arpit


Użyć grep analogowe, aby znaleźć ciągi oldnamespace i Jenine wewnątrz plików w całym folderze projektu. Wtedy będziesz wiedział, co zrobić dalej.


10
2017-07-02 01:41



Moje własne przypuszczenie co do tego, dlaczego zostałeś odrzucony, oznacza, że ​​podałeś dość oczywistą odpowiedź i mocno sugerowałeś, że rozwiąże ona problem. Twoja odpowiedź niekoniecznie musi być zła, ale twoje sformułowanie można interpretować jako nieuzasadnione nadmierne lub wyniosłe, co czasem denerwuje ludzi. - Erhannis
Hmm. Może masz rację. Z drugiej strony jest to frustrujące, gdy pytanie nie dostarcza odpowiedzi na oczywiste pytania, takie jak moje. Coś w stylu "Szukałem ciąg Jenine we wszystkich plikach, ale nie mogłem znaleźć dopasowania". Jestem zaintrygowany. Chcę rozwiązać tę zagadkę. Ale autor zostawia mnie wiszącego. - Ark-kun
Jak już powiedziałem, twoja odpowiedź niekoniecznie była zła; być może dlatego, że twoje zdanie kogoś zirytowało. Szczerze, to była moja pierwsza reakcja. Ogólnie staram się mówić rzeczy w sposób "ufnie to pomoże ", biorąc pod uwagę, że tak często prawdziwą przyczyną rzeczy nie jest to, co myślisz. Ponownie, zgadzam się, że twoja odpowiedź jest coś należy spróbować, i dlatego zasługuje na uwagę jako na przedłożoną odpowiedź, ale frazowanie czasami wpływa na ludzi bardziej, niż powinno. - Erhannis