在我的项目中,我让用户使用 FileReference 类选择图片。然后我使用 load() 函数将这些图片加载到它们的 .data 属性中。在此之后,我执行一些本地操作并将它们发送到服务器。
我想要做的是能够再次遍历选择的 FileReferences,将它们加载到 .data 属性中,执行不同的操作并再次将它们发送到服务器。我知道我应该能够从用户调用的事件中做到这一点,这在这里不是问题。
问题是,第一次加载FileReference后,我无法以任何方式卸载它,而且我无法将所有图片的数据保存在内存中,因为这些图片很大。
所以我想我只能做一件事,那就是对 FileReference 执行 DeepCopy……然后我可以加载第一个版本,将其废弃并使用该副本进行第二次“运行”。
我尝试使用 ObjectUtil.copy,但是当我访问例如.name 属性,它失败了:
Error #2037: Functions called in incorrect sequence, or earlier call was unsuccessful.
在 flash.net::FileReference/get name()
相关片段:
registerClassAlias("FileReference",FileReference);
masterFileList.addItem(FileReference(ObjectUtil.copy(fr_load.fileList[i])));
trace(masterFileList[i].name)
是否确实存在 FileReference 类的一些 protected 属性阻止它被复制?如果是这样,我可以以某种方式回避吗?或者有没有其他解决方案可以解决我的整体问题?
我感谢任何提示/想法!
最佳答案
你不能使用 ObjectUtil.copy。此方法设计用于仅复制数据对象(VO 类)。
您应该创建一个新的 FileReference 并逐个复制属性。创建一个函数来做到这一点..
关于apache-flex - 弹性 : DeepCopy of FileReference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1995396/