trong dự án của tôi, tôi cho phép người dùng chọn ảnh bằng cách sử dụng lớp FileReference. Sau đó tôi tải các ảnh này vào các thuộc tính .data của chúng, sử dụng hàm load(). Sau này tôi thực hiện một số thao tác cục bộ và gửi chúng đến máy chủ.Flex: DeepCopy của FileReference
Điều tôi muốn làm là có khả năng lặp lại qua các FileReferences đã chọn, tải chúng vào các thuộc tính .data, thực hiện thao tác khác và gửi chúng đến máy chủ một lần nữa. Tôi biết rằng tôi sẽ có thể thực hiện điều này từ sự kiện do người dùng gọi, đó không phải là vấn đề ở đây.
Vấn đề là, khi FileReference được tải lần đầu tiên, tôi không thể dỡ bỏ nó theo bất kỳ cách nào, và tôi không thể giữ dữ liệu cho tất cả các ảnh trong bộ nhớ vì chúng rất lớn. Vì vậy, tôi đoán rằng chỉ có một điều tôi có thể làm, đó là thực hiện một DeepCopy trên FileReference ... Sau đó tôi có thể tải phiên bản đầu tiên, phế liệu nó và sử dụng bản sao cho lần thứ hai 'chạy'.
Tôi đã cố gắng sử dụng ObjectUtil.copy, nhưng khi tôi truy cập ví dụ: tài sản .name của bản sao, nó không thành công với:
Error #2037: Functions called in incorrect sequence, or earlier call was unsuccessful.
vào tên flash.net::FileReference/get()
đoạn có liên quan:
registerClassAlias("FileReference",FileReference);
masterFileList.addItem(FileReference(ObjectUtil.copy(fr_load.fileList[i])));
trace(masterFileList[i].name)
Có đúng là có một số thuộc tính được bảo vệ của lớp FileReference có thể ngăn không cho nó được sao chép? Nếu nó là như vậy, tôi có thể bỏ qua điều này bằng cách nào đó? Hoặc là có bất kỳ giải pháp khác cho vấn đề tổng thể của tôi?
Tôi đánh giá cao bất kỳ gợi ý/ý tưởng nào!
Tôi mang nó lên tại actionscript.org và được xây dựng thêm một chút, nhưng vẫn không có hy vọng. Dù sao ở đây là chủ đề: http://www.actionscript.org/forums/showthread.php3?t=227441 – supo
Tôi đoán điều này không thể được thực hiện, vì có lẽ một số xử lý trong đối tượng FileReference không thể truy cập được sử dụng ActionScript. Tôi sẽ không ngạc nhiên nếu lớp FileReference thậm chí không được triển khai trong ActionScript. –