我有一个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从未恢复过来。直到今天,它仍然紧抓着对Jenine的记忆。她旧的、不完美的定义仍然像被遗弃的幽灵一样漂浮在我的项目中。每当我强制Flash编译时,它仍然会将她爱怜地插入我的电影中,把她的定义放在其他存活的类中间,像一个小神龛。我想知道他们能不能看到她。
现在Flash和我已经不怎么交流了。我写我的代码,它编译我的代码。镇上有个叫Summer的新女孩,几乎和Jenine一模一样,好像有人刚刚把她的源代码全部复制到一个新的类里,但Flash没有表现出任何兴趣。大多数时候,它只是闷闷不乐地在我的注释中写糟糕的诗歌,当它觉得我没在看它时。
我希望没有其他人有过类似的经历,这只是Flash代码库中可怕黑暗池塘中的一个痛苦波纹。有人知道如何清除编译器正在使用的缓存吗?