Vraag Flash CS4 weigert te laten gaan


Ik heb een Flash-project en het heeft veel bronbestanden. Ik heb een behoorlijk zwaar gebruikte klas, noem het Jenine. Ik heb onlangs Jenine van de ene naamruimte naar de andere verplaatst (en misschien ook onfatsoenlijk). Ik dacht dat we er klaar voor waren - ik dacht dat het tijd was. De nieuwe Jenine was in alle opzichten beter - ze had wat code-bloat verloren, ze had zichzelf ontkoppeld van een paar rudimentaire klassenrelaties, en ze was eindelijk thuis gekomen in de naamruimte die ze altijd stiekem in haar hart had gekend, was degene die ze echt was behoorde toe. Ze was van haar eigen soort.

Helaas zou Flash daar niets van hebben. Misschien had het een gehechtheid gevormd. Misschien deed het dat niet willen Jenine wordt ontkoppeld. Hoe dan ook, het klampte zich vast aan de oude, perfecte versie van Jenine in zijn geheugen. Het weigerde verder te gaan. Het negeerde haar (functie) oproepen. Het probeerde haar nieuwe, publieke interfaces te vergeten. In plaats daarvan was elk exemplaar van Jenine dat werd geconstrueerd altijd een kopie van de oude versie, naar het klassenpad:

var jenineInstance:Jenine = new Jenine();
trace( getQualifiedClassName(jenineInstance));
// Should print: com.newnamespace.subspace::Jenine
// Prints: com.oldnamespace.subspace::Jenine
// Ah, young love!

Wij vochten. Ik ben niet trots op sommige dingen die ik zei of deed. Uiteindelijk schrapte ik in een torenhoge woede alle verwijzingen naar Jenine volledig. Ze was volkomen, volledig uit het systeem gewist. Mijn cursor viel op de menu-optie "Lege prullenbak", zoals het koude deksel van een kistje.

Ik denk niet dat Flash ooit is hersteld. Tot op de dag van vandaag kleeft het nog steeds aan de nagedachtenis van Jenine. Haar oude, onvolmaakte definities zweven nog door mijn project als verlaten geesten. Telkens wanneer ik Flash dwing om te compileren, voegt het haar nog steeds liefdevol in mijn film, en nestelt ze haar definitie tussen de andere, levende klassen, zoals een klein heiligdom. Ik vraag me af of ze haar kunnen zien.

Flash en ik praat niet echt meer. Ik schrijf mijn code, het compileert het. Er is een nieuw meisje in de stad genaamd Summer die er bijna hetzelfde uitziet als Jenine, alsof iemand haar broncode in een nieuwe klasse had gekopieerd, maar Flash heeft geen interesse getoond. De meeste dagen snuffelt het gewoon rond en schrijft slechte poëzie in mijn opmerkingen als het denkt dat ik er niet naar kijk.

Ik hoop dat niemand anders een soortgelijke ervaring heeft gehad, dat dit slechts een enkelvoudige, pijnlijke rimpel is in de gruwelijke donkere lagune die de basis vormt van de Flash-code. Als je met een toevalstreffer kans hebt of als je enig idee hebt hoe je die verdomde cache die de compiler gebruikt, kunt wissen, help dan alsjeblieft.


2694
2018-02-03 17:32


oorsprong


antwoorden:


Flash heeft nog steeds het ASO-bestand, de gecompileerde bytecode voor uw klassen. In Windows kunt u de ASO-bestanden hier bekijken:

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

Op een Mac is de mapstructuur vergelijkbaar /Users/username/Library/Application Support/ 


U kunt die bestanden handmatig verwijderen of in Flash selecteren Control->Delete ASO files om ze te verwijderen.


693
2018-02-03 18:49



Probeer uw ASO-bestanden te verwijderen.

ASO-bestanden zijn in de cache gecompileerde versies van uw klassebestanden. Hoewel de IDE veel beter is in het loslaten van oude caches wanneer er wijzigingen worden aangebracht, moet je ze soms handmatig verwijderen. ASO-bestanden verwijderen: Besturing> ASO-bestanden verwijderen.

Dit is ook de oorzaak van de "ik-ben-zie-niet-alles-werkt-ik-toe-voeg-een-trace-bug" die in CS3 werd geïntroduceerd.


198
2018-02-03 18:40



Wat als u het compileert met een andere machine? Een nieuw geïnstalleerd exemplaar zou mooi zijn. ik hoop jouw machine is niet jaloers.


164
2018-02-03 20:25



Ik heb een gerelateerd gedrag gevonden dat kan helpen (het lijkt erop dat je specifieke probleem echter dieper gaat):

Flash controleert of een bronbestand opnieuw moet worden gecompileerd door naar tijdstempels te kijken. Als de gecompileerde versie is ouder dan het bronbestand, zal het opnieuw compileren. Maar het controleert niet of de gecompileerde versie is gegenereerd uit hetzelfde bronbestand of niet.

Als u uw actiescript-bestanden onder versiebeheer hebt en u een wijziging terugzet, heeft het teruggezette bestand meestal een oudere tijdstempel en zal Flash het negeren.


125
2018-02-03 18:04



Ook om je nieuwe naamklasse-klasse te gebruiken, kun je dat ook

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

102
2018-02-05 16:55



Heb je meerdere swf-bestanden? Als je klasse is geïmporteerd in een van de swf's, gebruiken andere swf's ook dezelfde versie van de klasse. Eén oude import met * in één swf zal het doen. Hercompileer alles en kijk of het werkt.


96
2018-02-04 04:26



Gebruik een grep analoog om de snaren te vinden oldnamespace en Jenine in de bestanden in uw hele projectmap. Dan weet je welke stap je moet doen.


10
2017-07-02 01:41