O Flash CS4 se recusa a deixar ir

2742

Eu tenho um projeto em Flash e ele tem muitos arquivos de origem. Eu tenho uma aula bastante usada, chame Jenine. Recentemente (e, talvez, insensivelmente), mudei Jenine de um espaço para nome para outro. Eu pensei que estávamos prontos - pensei que era hora. A nova Jenine era melhor em todos os sentidos - ela havia perdido algum código, se separou de algumas relações de classe vestigiais e finalmente chegou em casa no espaço de nome que sempre soube secretamente em seu coração que ela realmente pertencia a. Ela estava entre sua própria espécie.

Infelizmente, o Flash não teria nada disso. Talvez tivesse formado um apego. Talvez não quisesse que Jenine fosse dissociada. De qualquer maneira, ele se apegou à versão antiga e perfeita de Jenine em sua memória. Ele se recusou a seguir em frente. Ele ignorou as chamadas dela (função). Tentou esquecer suas novas interfaces públicas. Em vez disso, todas as instâncias de Jenine que ele construiu sempre foram uma cópia da versão antiga, até o caminho da classe:

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

Lutamos. Não tenho orgulho de algumas das coisas que disse ou fiz. No final, em um ataque imenso de raiva, eu apaguei todas as referências de Jenine completamente. Ela foi completamente apagada do sistema. Meu cursor caiu na opção de menu "Esvaziar Lixo", como a tampa fria de um caixão.

Acho que o Flash nunca se recuperou. Até hoje, ainda se apega à memória de Jenine. Suas definições antigas e imperfeitas ainda flutuam no meu projeto como fantasmas abandonados. Sempre que forço o Flash a compilar, ele ainda a insere amorosamente no meu filme, aninhando sua definição entre as outras classes vivas, como um pequeno santuário. Eu me pergunto se eles podem vê-la.

Flash e eu realmente não falamos mais. Eu escrevo meu código, ele o compila. Há uma garota nova na cidade chamada Summer que parece quase idêntica a Jenine, como se alguém tivesse copiado seu código-fonte por atacado para uma nova classe, mas o Flash não demonstrou nenhum interesse. Na maioria dos dias, ele fica pensando e escrevendo poesia ruim nos meus comentários quando pensa que não estou olhando.

Espero que ninguém mais tenha tido uma experiência semelhante, que essa seja apenas uma onda singular e dolorosa na horrível lagoa escura que é a base de código do Flash. Alguém tem alguma idéia de como apagar o cache que o compilador está usando?

Ender
fonte

Respostas:

701

O Flash ainda possui o arquivo ASO, que é o código de bytes compilado para suas classes. No Windows, você pode ver os arquivos ASO aqui:

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

Em um Mac, a estrutura de diretórios é semelhante em /Users/username/Library/Application Support/


Você pode remover esses arquivos manualmente ou, no Flash, pode optar Control->Delete ASO filespor removê-los.

wpjmurray
fonte
34
Copiado a partir de baixo: Esta e a outra resposta muito semelhante são exatamente o que eu estava procurando, mas infelizmente não parece resolver o problema. Vou atribuir um presente a este problema, da Adobe. Vou marcar como resolvido, no entanto.
Ender
292
PS: Cliquei no item do menu várias vezes. Mergulhei profundamente na estrutura de arquivos em uma busca para finalmente eliminar os arquivos que contêm os últimos ecos de Jenine. Eles não estão lá. Quando pergunto sobre eles, o Flash apenas murmura algo incoerente e olha para o espaço. Acho que posso começar a ouvir algo sobre o martelar louco do botão do mouse. Jenine está rindo.
Enders
23
@ Além disso, você enfrenta o mesmo problema se compilar recentemente o código em uma nova caixa. Como uma nova verificação do código em um computador novo? Isso deve informar se há ou não um problema com o código ou outras coisas que estão no seu sistema de arquivos *.
perfil completo de Jesse Webb
197

Tente excluir seus arquivos ASO.

Os arquivos ASO são versões compiladas em cache dos seus arquivos de classe. Embora o IDE seja muito melhor para liberar caches antigos quando as alterações são feitas, às vezes você precisa excluí-los manualmente. Para excluir arquivos ASO: Controle> Excluir arquivos ASO.

Essa também é a causa do erro "Não estou vendo minhas alterações, então deixe-me adicionar um rastreio agora tudo funciona" que foi introduzido no CS3.

Magocto
fonte
165

E se você o compilar usando outra máquina? Um novo instalado seria adorável. Espero que sua máquina não seja ciumenta.

Rodrigo Strauss
fonte
125

Eu encontrei um comportamento relacionado que pode ajudar (parece que seu problema específico é mais profundo):

O Flash verifica se um arquivo de origem precisa ser recompilado observando os registros de data e hora. Se sua versão compilada for mais antiga que o arquivo de origem, ela será recompilada. Mas não verifica se a versão compilada foi gerada a partir do mesmo arquivo de origem ou não.

Especificamente, se você tiver seus arquivos de script de ação sob controle de versão e reverter uma alteração, o arquivo revertido normalmente terá um carimbo de data / hora mais antigo e o Flash o ignorará.

Laurie Cheers
fonte
12
É verdade que trabalho em vários projetos com desenvolvedores da África do Sul e Londres. Quando entregamos os arquivos em flash, precisamos salvá-los localmente, pois a compilação causará um erro louco com base no carimbo de data e hora do arquivo. Essencialmente, tentar compilar um flash que foi salvo no futuro é o problema. Nós descobrimos isso alterando nossa data em nossos sistemas operacionais. Tente verificar seu carimbo de data e hora.
Dominic Tancredi
103

Além disso, para usar sua nova classe no namespace, você também pode

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

Você tem vários arquivos swf? Se sua classe for importada em um dos swf's, outros swfs também usarão a mesma versão da classe. Uma importação antiga com * em um swf fará isso. Recompile tudo e veja se funciona.

Dave
fonte
10
Sim, estou apostando que Jenine está compilada em alguma outra parte do seu código, seja um swf ou um swc que você está usando.
Arpit
11

Use um grepanalógico para encontrar as strings oldnamespacee Jenineos arquivos em toda a pasta do projeto. Então você saberia o que fazer a seguir.

Ark-kun
fonte
4
Meu próprio palpite sobre o motivo pelo qual você recebeu voto negativo seria que você deu uma resposta bastante óbvia e fortemente implicou que isso resolveria o problema. Sua resposta não é necessariamente ruim, mas seu fraseado pode ser interpretado como excessivamente confiante ou arrogante, o que às vezes irrita as pessoas.
Erhannis
5
Hmm. Talvez você esteja certo. Por outro lado, é frustrante quando a pergunta não fornece as respostas para perguntas óbvias como a minha. Algo como "procurei a string Jenine em todos os arquivos, mas não consegui encontrar uma correspondência". Estou intrigado. Eu quero resolver esse mistério. Mas o autor me deixa pendurado.
Ark-kun
3
Como eu disse, sua resposta não foi necessariamente ruim; pode ter sido apenas que seu fraseado irritou alguém. Honestamente, essa foi minha primeira reação. Eu geralmente tento dizer as coisas da maneira " espero que isso ajude", uma vez que com tanta freqüência a causa real das coisas não é o que você pensa. Mais uma vez, concordo que sua resposta é algo que se deve tentar e, portanto, merece consideração como uma resposta enviada, mas o fraseado às vezes influencia as pessoas mais do que deveria.
Erhannis