Flash CS4 se niega a dejarlo ir

2742

Tengo un proyecto de Flash y tiene muchos archivos fuente. Tengo una clase bastante usada, llámala Jenine. Recientemente (y, quizás, cruelmente) reubiqué a Jenine de un espacio de nombres a otro. Pensé que estábamos listos, pensé que era hora. La nueva Jenine era mejor en todos los sentidos: había perdido algo de código, se había desacoplado de algunas relaciones de clase vestigiales y finalmente había vuelto al espacio de nombres que siempre había sabido en secreto en su corazón que era realmente pertenecía a. Ella estaba entre su propia especie.

Desafortunadamente, Flash no tendría nada de eso. Quizás había formado un apego. Quizás no quería que Jenine se desacople. De cualquier manera, se aferró a la versión antigua y perfecta de Jenine en su memoria. Se negó a seguir adelante. Ignoraba sus llamadas (de función). Intentó olvidar sus nuevas interfaces públicas. En cambio, cada instancia de Jenine que construyó siempre fue una copia de la versión anterior, hasta su classpath:

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

Nos peleamos. No estoy orgulloso de algunas de las cosas que dije o hice. Al final, en un ataque de ira, eliminé todas las referencias de Jenine por completo. Estaba completamente borrada del sistema. Mi cursor cayó sobre la opción de menú "Vaciar papelera" como la tapa fría de un ataúd.

No creo que Flash se haya recuperado nunca. Hasta el día de hoy todavía se aferra a la memoria de Jenine. Sus viejas e imperfectas definiciones todavía flotan en mi proyecto como fantasmas abandonados. Cada vez que fuerzo a Flash a compilar, todavía la inserta con amor en mi película, ubicando su definición entre las otras clases de vida, como un pequeño santuario. Me pregunto si pueden verla.

Flash y ya no hablo más. Escribo mi código, lo compila. Hay una nueva chica en la ciudad llamada Summer que se ve casi idéntica a Jenine, como si alguien hubiera copiado su código fuente al por mayor en una nueva clase, pero Flash no ha mostrado ningún interés. La mayoría de los días simplemente se deprime y escribe mala poesía en mis comentarios cuando piensa que no estoy mirando.

Espero que nadie más haya tenido una experiencia similar, que esto sea solo una onda singular y dolorosa en la horrible laguna oscura que es la base del código Flash. ¿Alguien tiene alguna idea de cómo borrar cualquier caché que esté utilizando el compilador?

Ender
fuente

Respuestas:

701

Flash todavía tiene el archivo ASO, que es el código de bytes compilado para sus clases. En Windows, puede ver los archivos ASO aquí:

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

En una Mac, la estructura del directorio es similar en /Users/username/Library/Application Support/


Puede eliminar esos archivos a mano, o en Flash puede seleccionar Control->Delete ASO fileseliminarlos.

wpjmurray
fuente
34
Copiado desde abajo: Esta y la otra respuesta muy similar es exactamente lo que estaba buscando, pero desafortunadamente no parece resolver el problema. Voy a atribuir esto a Adobe Bug Fun Tiem. Sin embargo, voy a marcarlo como resuelto.
Ender
292
PD: He hecho clic en el elemento del menú una y otra vez. Me sumergí profundamente en la estructura de archivos en una búsqueda para finalmente eliminar los archivos que contienen los últimos ecos de Jenine. No estan ahi. Cuando pregunto por ellos, Flash solo murmura algo incoherente y mira hacia el espacio. Creo que puedo comenzar a escuchar algo sobre el martilleo loco de mi botón del mouse. Jenine se está riendo.
Ender
23
@Ender, ¿experimenta el mismo problema si compila el código recientemente en una nueva caja? ¿Como una nueva compra del código en una computadora nueva? Esto debería decirle si es o no un problema con el código o las cosas que persisten en su sistema de archivos *.
Jesse Webb
197

Intenta eliminar tus archivos ASO.

Los archivos ASO son versiones compiladas en caché de sus archivos de clase. Aunque el IDE es mucho mejor para deshacerse de las memorias caché antiguas cuando se realizan cambios, a veces hay que eliminarlas manualmente. Para eliminar archivos ASO: Control> Eliminar archivos ASO.

Esta es también la causa del error "No-estoy-viendo-mis-cambios-así que déjame-agregar-un-rastro-ahora-todo-funciona" que se introdujo en CS3.

Magocto
fuente
165

¿Qué pasa si lo compila usando otra máquina? Una nueva instalada sería encantadora. Espero que tu máquina no sea celosa.

Rodrigo Strauss
fuente
125

He encontrado un comportamiento relacionado que puede ayudar (aunque parece que su problema específico es más profundo):

Flash comprueba si un archivo fuente necesita recompilarse mirando las marcas de tiempo. Si su versión compilada es anterior al archivo fuente, se recompilará. Pero no comprueba si la versión compilada se generó a partir del mismo archivo fuente o no.

Específicamente, si tiene sus archivos de ActionScript bajo control de versión y revierte un cambio, el archivo revertido generalmente tendrá una marca de tiempo más antigua y Flash lo ignorará.

Laurie Cheers
fuente
12
Es cierto que trabajo en varios proyectos con desarrolladores de Sudáfrica y Londres. Cuando entregamos archivos flash de un lado a otro, tenemos que guardarlo localmente, ya que la compilación causará un error loco basado en la marca de tiempo del archivo. Esencialmente, tratar de compilar un flash que se haya guardado en el futuro es el problema. Lo descubrimos cambiando nuestra fecha en nuestro sistema operativo. Intenta comprobar tu marca de tiempo.
Dominic Tancredi
103

Además, para usar su nueva clase de espacio de nombres también puede hacer

var jenine:com.newnamespace.subspace.Jenine = com.newnamespace.subspace.Jenine()
Arpit
fuente
96

¿Tienes varios archivos swf? Si su clase se importa en uno de los swf, otros swf también utilizarán la misma versión de la clase. Una importación anterior con * en un swf lo hará. Vuelva a compilar todo y vea si funciona.

Dave
fuente
10
Sí, apuesto a que Jenine está compilada en alguna otra parte de tu código, ya sea un swf o un swc que estás utilizando.
Arpit
11

Use un grepanálogo para encontrar las cadenas oldnamespacey Jeninedentro de los archivos en toda la carpeta de su proyecto. Entonces sabrías qué paso hacer a continuación.

Ark-kun
fuente
44
Mi propia conjetura de por qué te votaron negativamente sería que has dado una respuesta bastante obvia e implicado firmemente que resolverá el problema. Su respuesta no es necesariamente mala, pero su frase podría interpretarse como injustificadamente confiada o altiva, lo que a veces molesta a las personas.
Erhannis
55
Hmm Quizás tengas razón. Por otro lado, es frustrante cuando la pregunta no proporciona las respuestas a preguntas obvias como la mía. Algo así como "He buscado la cadena Jenine en todos los archivos, pero no pude encontrar una coincidencia". Estoy intrigado. Quiero resolver este misterio Pero el autor me deja colgado.
Ark-kun
3
Como dije, tu respuesta no fue necesariamente mala; puede haber sido que tu frase molestó a alguien. Honestamente, esa fue mi primera reacción. Por lo general, trato de decir las cosas en la forma de " espero que esto ayude", dado que con tanta frecuencia la causa real de las cosas no es lo que piensas. Una vez más, estoy de acuerdo en que su respuesta es algo que uno debería intentar y, por lo tanto, merece ser considerada como una respuesta presentada, pero la redacción a veces influye en las personas más de lo que debería.
Erhannis