Pregunta Flash CS4 se niega a dejar ir


Tengo un proyecto de Flash y tiene muchos archivos fuente. Tengo una clase bastante usada, llámala Jenine. Recientemente (y quizás, cruelmente) reubicé 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 hinchado, se había desacoplado de unas pocas relaciones de clase vestigiales, y finalmente había llegado a casa al espacio de nombres que siempre había sabido secretamente en su corazón era el que ella realmente perteneció a. Ella estaba entre los de su propia clase.

Desafortunadamente, Flash no tendría nada de eso. Tal vez se había formado un archivo adjunto. Tal vez no lo hizo querer Jenine estará desacoplada. De cualquier manera, se aferró a la versión antigua y perfecta de Jenine en su memoria. Se negó a seguir adelante. Ignoró sus llamadas (de funciones). Intentó olvidar sus nuevas interfaces públicas. En cambio, cada instancia de Jenine que construyó fue siempre 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 gran ataque de ira, eliminé por completo todas las referencias de Jenine. Ella fue totalmente, completamente borrada del sistema. Mi cursor cayó sobre la opción del menú "Vaciar papelera" como la tapa fría de un ataúd.

No creo que Flash se haya recuperado nunca. A 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 obligo a Flash a compilar, todavía la inserta cariñosamente en mi película, anidando su definición entre las otras clases de la vida, como un pequeño santuario. Me pregunto si pueden verla.

Flash y realmente no hablo más. Escribo mi código, lo compila. Hay una chica nueva en la ciudad llamada Summer que se ve casi idéntica a Jenine, como si alguien acabara de copiar su código fuente mayorista en una nueva clase, pero Flash no ha mostrado ningún interés. La mayoría de los días me da vueltas y escribe mal poesía en mis comentarios cuando cree que no estoy mirando.

Espero que nadie más haya tenido una experiencia similar, que esta es solo una singular y dolorosa onda en la horrible laguna oscura que es la base de código Flash. Si, por alguna casualidad que tengas, o si tienes alguna idea de cómo borrar el maldito caché que está usando el compilador, por favor ayuda.


2694
2018-02-03 17:32


origen


Respuestas:


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 files para eliminarlos.


693
2018-02-03 18:49



Intenta borrar 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 los cachés antiguos cuando se realizan cambios, a veces hay que eliminarlos manualmente. Para eliminar archivos ASO: Control> Eliminar archivos ASO.

Esta también es la causa del error "I-am-not-seeing-my-changes-so-let-me-add-a-trace-now-everything-works" que se introdujo en CS3.


198
2018-02-03 18:40



¿Qué pasa si lo compila con otra máquina? Un nuevo instalado sería encantador. espero su máquina no es celoso


164
2018-02-03 20:25



He encontrado un comportamiento relacionado que puede ayudar (aunque parece que tu 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 mayor que el archivo de origen, se volverá a compilar. Pero no comprueba si la versión compilada se generó a partir del mismo archivo fuente o no.

Específicamente, si tiene sus archivos actionscript bajo control de versión y Revertir un cambio, el archivo revertido generalmente tendrá una marca de tiempo anterior, y Flash lo ignorará.


125
2018-02-03 18:04



Además, para usar tu nueva clase de espacio de nombres también puedes hacer

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

102
2018-02-05 16:55



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


96
2018-02-04 04:26



Usar una grep analógico para encontrar las cuerdas oldnamespace y Jenine dentro de los archivos en toda la carpeta del proyecto. Entonces sabrías qué paso hacer a continuación.


10
2017-07-02 01:41