Flash CS4不肯放手

flash caching flash-cs4


我有一个Flash项目,它有很多源文件。我有一个使用量相当大的类,叫它Jenine。我最近(也许是无情地)把Jenine从一个命名空间迁移到了另一个命名空间。我认为我们已经准备好了--我认为是时候了。新的Jenine在各方面都更好--她失去了一些代码的臃肿,她从一些残存的类关系中解脱出来,她终于回到了她心里一直暗暗知道的那个命名空间,那才是她真正的归属。她是属于自己的同类。

不幸的是,Flash根本没有。也许它已经形成了一种依恋。也许它不希望 Jenine脱钩。无论哪种方式,它都紧紧抓住了Jenine完美的旧版本。它拒绝继续前进。它忽略了她的(职能)电话。它试图忘记她的新公共界面。相反,它构造的每个Jenine实例始终是旧版本的副本,直到其类路径:

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

我们打了起来。我对自己说过或做过的一些事情并不感到骄傲。最后,在高高在上的愤怒中,我彻底删除了杰宁的所有资料。她彻底地,彻底地从系统中删除了。我的光标落在 "清空垃圾 "菜单选项上,就像冰冷的棺材盖。

我觉得闪电侠没有恢复过。直到今天,它仍然依恋着对Jenine的记忆。她的旧的、不完美的定义仍然像被遗弃的幽灵一样在我的项目中飘荡。每当我强迫Flash编译的时候,它还是会爱不释手地把她插入我的电影中,把她的定义嵌在其他的、活生生的类中,就像一座小神龛。我不知道他们是否能看到她。

我和闪电侠已经不怎么说话了。我写我的代码,它编译它。镇上新来了一个叫Summer的女孩,她看起来和Jenine几乎一模一样,就好像有人把她的源代码全盘复制到了一个新的班级里,但Flash没有表现出任何兴趣。大多数时候,它只是闷闷不乐,在我的评论里写一些糟糕的诗歌,当它认为我没有在看的时候。

我希望没有人有类似的经历,这只是Flash代码库这个可怕的黑暗泻湖中的一个单一的、痛苦的涟漪。有谁知道如何清除编译器使用的缓存?




Answer 1 wpjmurray


Flash仍然有ASO文件,它是你的类的编译字节码。在Windows上,你可以在这里看到ASO文件。

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

在Mac上,目录结构在 /Users/username/Library/Application Support/


您可以手动删除这些文件,或者在Flash中可以选择“ Control->Delete ASO files 来删除它们。




Answer 2 Magocto


尝试删除你的ASO文件。

ASO文件是类文件的缓存编译版本。尽管在进行更改时,IDE可以更好地释放旧的缓存,但是有时您必须手动删除它们。删除ASO文件:控制>删除ASO文件。

这也是CS3中引入的 "I-am-not-seeing-my-changes-so-let-me-add-a-trace-now-everything-works "bug的原因。




Answer 3 Rodrigo Strauss


如果使用另一台计算机编译该怎么办?新鲜安装的将是可爱的。希望您的机器不会嫉妒。




Answer 4 Laurie Cheers


我发现一种相关的行为可能会有帮助(听起来你的具体问题虽然比较深)。

Flash通过查看时间戳检查源文件是否需要重新编译。如果其编译版本于源文件,它将重新编译。但是它不会检查编译版本是否是从相同的源文件生成的。

具体来说,如果你的actionscript文件处于版本控制之下,并且你Revert了一个变化,那么被还原的文件通常会有一个较旧的时间戳,而Flash会忽略它。




Answer 5 Arpit


另外,为了使用新的命名空间类,你也可以做以下操作

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