Flash CS4拒绝放手

End*_*der 2735 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!
Run Code Online (Sandbox Code Playgroud)

我们打了.我对自己所说或做过的一些事情并不感到骄傲.最后,在愤怒的高潮中,我完全删除了所有Jenine的引用.她完全被系统彻底清除了.我的光标落在"清空垃圾"菜单选项上,就像棺材的冷盖一样.

我认为Flash无法恢复.直到今天,它仍然依附于珍妮的记忆.她的旧的,不完美的定义仍然像我被遗弃的幽灵一样漂浮在我的项目中.每当我强迫Flash编译时,它仍然会将她的爱情插入到我的电影中,将她的定义融入其他生活课程中,就像一个小神社.我想知道他们是否能看到她.

Flash和我不再谈论了.我写了我的代码,它编译它.在镇上有一个名叫Summer的新女孩看起来几乎与Jenine完全相同,好像有人刚刚将她的源代码批发复制到一个新的类中,但Flash并没有表现出任何兴趣.大多数时候,当它认为我不看时,它只是在我的评论中徘徊并写下糟糕的诗歌.

我希望没有其他人有类似的经历,这只是一个奇怪的,痛苦的波纹在可怕的黑暗泻湖,即Flash代码库.如果你有一些侥幸的机会,或者你知道如何删除编译器正在使用的任何该死的缓存,请帮助.

wpj*_*ray 699

Flash仍然具有ASO文件,该文件是类的已编译字节代码.在Windows上,您可以在此处查看ASO文件:

C:\Documents and Settings\username\Local Settings\Application Data\Adobe\Flash CS4\en\Configuration\Classes\aso
Run Code Online (Sandbox Code Playgroud)

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


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

  • PS:我一遍又一遍地点击菜单项.我深入到文件结构中,最终要删除包含Jenine最后回声的文件.他们不在那里.当我问起他们时,Flash只是嘟something了一些不连贯的东西并且盯着太空.我想我可以开始听到疯狂锤击我的鼠标按钮的东西.珍妮在笑. (291认同)
  • 从下面复制:这个和另一个非常相似的答案正是我所寻找的,但不幸的是似乎没有解决问题.我要把这个粉笔粘到Adobe bug funm上.不过,我打算将它标记为已解决. (34认同)
  • @Ender,如果你在新盒子上新编译代码,你会遇到同样的问题吗?就像在新计算机上重新检查代码一样?这应该告诉您是否存在*your*filesystem*上存在的代码或事物的问题. (23认同)

小智 197

尝试删除您的ASO文件.

ASO文件是类文件的缓存编译版本.虽然IDE在更改时放弃旧缓存更好,但有时您必须手动删除它们.要删除ASO文件:控制>删除ASO文件.

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


Rod*_*uss 163

如果使用其他机器编译它会怎么样?一个新装的将是可爱的.我希望你的机器不嫉妒.


Lau*_*ers 124

我发现了一个可能有帮助的相关行为(听起来像你的具体问题更深入):

Flash通过查看时间戳来检查源文件是否需要重新编译.如果其编译版本比源文件,则会重新编译.但它不会检查编译版本是否是从同一源文件生成的.

具体来说,如果您将actionscript文件置于版本控制之下,并且还原了更改,则还原的文件通常会有较旧的时间戳,Flash将忽略它.

  • 没错,我与来自南非和伦敦的开发人员合作完成了几个项目.当我们来回切换flash文件时,我们必须在本地保存它,因为编译会根据文件的时间戳导致疯狂的错误.从本质上讲,尝试编译将来保存的闪存是个问题.我们通过改变操作系统的日期来解决问题.尝试检查您的时间戳. (12认同)

Arp*_*pit 102

此外,要使用新的命名空间类,您也可以这样做

var jenine:com.newnamespace.subspace.Jenine = com.newnamespace.subspace.Jenine()
Run Code Online (Sandbox Code Playgroud)


小智 96

你有几个swf文件?如果您的类是在其中一个swf中导入的,那么其他swf也会使用相同版本的类.在一个swf中使用*的一个旧导入将执行此操作.重新编译所有内容,看它是否有效.

  • 是的我打赌Jenine被编译到你的代码的其他部分,无论是swf还是你正在使用的swc. (10认同)

Ark*_*kun 11

使用grep模拟查找整个项目文件夹中的字符串oldnamespaceJenine文件内部.然后你就知道下一步该做什么了.

  • 嗯.可能你是对的.另一方面,当问题没有提供像我这样的明显问题的答案时,这是令人沮丧的.像"我在所有文件中搜索字符串Jenine,但找不到匹配"之类的东西.我很好奇.我想解开这个谜.但是作者让我不知所措. (5认同)
  • 我自己猜测你为什么会被投票,你会得到一个相当明显的答案并强烈暗示它会解决问题.你的答案不一定是坏的,但你的措辞可能被解释为不合理地过分自信或傲慢,这有时会使人厌恶. (4认同)
  • 正如我所说,你的回答并不一定是坏事; 可能只是你的措辞使某人恼火.老实说,这是我的第一反应.我一般都试图以"_hopefully_这会有所帮助"的方式说出事情,因为事情的真正原因往往不是你想的.再一次,我同意你的回答_是一个应该尝试的东西,因此值得考虑作为一个提交的答案,但措辞有时会影响人们,而不是它应该. (3认同)