Flash CS4 không chịu buông tay


2742

Tôi có một dự án Flash và nó có nhiều tệp nguồn. Tôi có một lớp học được sử dụng khá nhiều, gọi nó là Jenine. Gần đây tôi (và có lẽ, một cách nhẫn tâm) đã chuyển Jenine từ không gian tên này sang không gian tên khác. Tôi nghĩ rằng chúng tôi đã sẵn sàng - tôi nghĩ đó là thời gian. Jenine mới tốt hơn về mọi mặt - cô ấy đã bị mất một số mật mã, cô ấy đã tách mình ra khỏi một vài mối quan hệ giai cấp, và cuối cùng cô ấy đã trở về không gian tên mà cô ấy luôn biết thầm trong lòng là người mà cô ấy thực sự biết. thuộc về. Cô ấy là một trong những loại của riêng mình.

Thật không may, Flash sẽ không có điều đó. Có lẽ nó đã hình thành một tập tin đính kèm. Có lẽ nó không muốn Jenine bị tách ra. Dù bằng cách nào, nó vẫn bám lấy phiên bản cũ, hoàn hảo của Jenine trong ký ức. Nó không chịu đi tiếp. Nó bỏ qua các cuộc gọi (chức năng) của cô. Nó đã cố gắng để quên giao diện mới, công khai của cô. Thay vào đó, mọi phiên bản của Jenine mà nó tạo ra luôn là một bản sao của phiên bản cũ, theo đường dẫn của nó:

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

Chúng ta đã chiến đấu. Tôi không tự hào về một số điều tôi đã nói hoặc đã làm. Cuối cùng, trong một cơn thịnh nộ cao chót vót, tôi đã xóa hoàn toàn tất cả các tài liệu tham khảo về Jenine. Cô đã hoàn toàn bị xóa hoàn toàn khỏi hệ thống. Con trỏ của tôi rơi vào tùy chọn menu "Thùng rác" như nắp lạnh của quan tài.

Tôi không nghĩ Flash đã hồi phục. Cho đến ngày nay nó vẫn bám lấy ký ức của Jenine. Những định nghĩa cũ, không hoàn hảo của cô ấy vẫn trôi nổi trong dự án của tôi như những bóng ma bị bỏ rơi. Bất cứ khi nào tôi buộc Flash biên dịch, nó vẫn đưa cô ấy vào bộ phim của tôi một cách yêu thương, lồng vào định nghĩa của cô ấy giữa các lớp khác, sống như một ngôi đền nhỏ. Tôi tự hỏi nếu họ có thể nhìn thấy cô ấy.

Flash và tôi không thực sự nói nữa. Tôi viết mã của tôi, nó biên dịch nó. Có một cô gái mới ở thị trấn tên Summer trông gần giống với Jenine, như thể ai đó vừa sao chép bán buôn mã nguồn của cô ấy sang một lớp mới, nhưng Flash không thể hiện sự quan tâm nào. Hầu hết các ngày, nó chỉ quanh quẩn và viết thơ dở trong những bình luận của tôi khi nó nghĩ rằng tôi không tìm kiếm.

Tôi hy vọng không ai khác có trải nghiệm tương tự, rằng đây chỉ là một gợn đau đớn, đơn lẻ trong đầm phá kinh hoàng đó là cơ sở mã Flash. Có ai có ý tưởng làm thế nào để xóa bất kỳ bộ đệm mà trình biên dịch đang sử dụng không?

Câu trả lời:


701

Flash vẫn có tệp ASO, là mã byte được biên dịch cho các lớp của bạn. Trên Windows, bạn có thể xem các tệp ASO tại đây:

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

Trên máy Mac, cấu trúc thư mục tương tự trong /Users/username/Library/Application Support/


Bạn có thể xóa các tệp đó bằng tay hoặc trong Flash bạn có thể chọn Control->Delete ASO filesđể xóa chúng.


34
Sao chép từ bên dưới: Câu trả lời này và câu trả lời rất giống nhau chính xác là những gì tôi đang tìm kiếm, nhưng tiếc là dường như không giải quyết được vấn đề. Tôi sẽ đánh dấu cái này lên đến Adobe tiem vui vẻ. Tôi sẽ đánh dấu nó là giải quyết, tuy nhiên.
Ender

292
PS: Tôi đã nhấp vào mục menu nhiều lần. Tôi đã đi sâu vào cấu trúc tệp trong một nhiệm vụ để cuối cùng loại bỏ các tệp chứa tiếng vang cuối cùng của Jenine. Họ không có ở đó. Khi tôi hỏi về họ, Flash chỉ lầm bầm điều gì đó không mạch lạc và nhìn chằm chằm vào không gian. Tôi nghĩ rằng tôi có thể bắt đầu nghe thấy một cái gì đó qua cái búa điên cuồng của nút chuột. Jenine đang cười.
Ender

23
@Ender, bạn có gặp phải vấn đề tương tự nếu bạn mới biên dịch mã trên một hộp mới. Giống như một kiểm tra mới của mã trên một máy tính mới? Điều này sẽ cho bạn biết liệu đó có phải là vấn đề với mã hay những thứ còn sót lại trên hệ thống tệp của bạn * hay không.
Jesse Webb

197

Hãy thử xóa các tệp ASO của bạn.

Các tệp ASO là các phiên bản được biên dịch lưu trữ của các tệp lớp của bạn. Mặc dù IDE tốt hơn rất nhiều trong việc loại bỏ bộ nhớ cache cũ khi thay đổi được thực hiện, đôi khi bạn phải xóa chúng theo cách thủ công. Để xóa các tệp ASO: Kiểm soát> Xóa các tệp ASO.

Đây cũng là nguyên nhân của lỗi "Tôi không nhìn thấy những thay đổi của tôi-cho-tôi-thêm-một-dấu-hiện-mọi thứ-công việc" đã được giới thiệu trong CS3.


165

Điều gì nếu bạn biên dịch nó bằng máy khác? Một cài đặt mới sẽ là đáng yêu. Tôi hy vọng máy của bạn không ghen.


125

Tôi đã tìm thấy một hành vi liên quan có thể giúp ích (nghe có vẻ như vấn đề cụ thể của bạn chạy sâu hơn):

Flash kiểm tra xem một tệp nguồn có cần biên dịch lại hay không bằng cách xem dấu thời gian. Nếu phiên bản được biên dịch của nó hơn tệp nguồn, nó sẽ biên dịch lại. Nhưng nó không kiểm tra xem phiên bản đã biên dịch có được tạo từ cùng một tệp nguồn hay không.

Cụ thể, nếu bạn có các tệp hành động của mình dưới sự kiểm soát phiên bản và bạn Hoàn nguyên thay đổi, tệp được hoàn nguyên thường sẽ có dấu thời gian cũ hơn và Flash sẽ bỏ qua nó.


12
Đúng, tôi làm việc trên một số dự án với các nhà phát triển từ Nam Phi và London. Khi chúng tôi xử lý các tệp flash qua lại, chúng tôi phải lưu nó cục bộ, vì quá trình biên dịch sẽ gây ra lỗi điên dựa trên dấu thời gian của tệp. Về cơ bản, cố gắng biên dịch một đèn flash đã được lưu trong tương lai là vấn đề. Chúng tôi đã tìm ra nó bằng cách thay đổi ngày của chúng tôi trên hệ điều hành của chúng tôi. Hãy thử kiểm tra dấu thời gian của bạn.
Đaminh Tancredi

103

Ngoài ra, để sử dụng lớp không gian tên mới của bạn, bạn cũng có thể làm

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

96

Bạn có một số tập tin swf? Nếu lớp của bạn được nhập vào một trong các swf, các swf khác cũng sẽ sử dụng cùng một phiên bản của lớp. Một lần nhập cũ với * trong một swf sẽ làm điều đó. Biên dịch lại mọi thứ và xem nếu nó hoạt động.


10
Vâng tôi cá cược Jenine được biên dịch vào một số phần khác trong mã của bạn, hoặc là swf hoặc swc mà bạn đang sử dụng.
Arpit

11

Sử dụng một grepchất tương tự để tìm các chuỗi oldnamespaceJeninebên trong các tệp trong toàn bộ thư mục dự án của bạn. Sau đó, bạn sẽ biết những bước cần làm tiếp theo.


4
Dự đoán của riêng tôi về lý do tại sao bạn bị từ chối sẽ là bạn đã đưa ra một câu trả lời khá rõ ràng và ngụ ý mạnh mẽ rằng nó sẽ giải quyết vấn đề. Câu trả lời của bạn không hẳn là xấu, nhưng cách nói của bạn có thể được hiểu là quá tự tin hoặc kiêu căng một cách vô lý, điều này đôi khi làm mọi người khó chịu.
Erhannis

5
Hừm. Có lẽ bạn nói đúng. Mặt khác, thật bực bội khi câu hỏi không cung cấp câu trả lời cho những câu hỏi rõ ràng như của tôi. Một cái gì đó như "Tôi đã tìm kiếm chuỗi Jenine trong tất cả các tệp, nhưng không thể tìm thấy kết quả khớp". Tôi tò mò. Tôi muốn giải quyết bí ẩn này. Nhưng tác giả để tôi treo.
Ark-kun

3
Như tôi đã nói, câu trả lời của bạn không nhất thiết là xấu; nó có thể chỉ là phrasing của bạn làm phiền ai đó. Thành thật mà nói, đó là phản ứng đầu tiên của tôi. Tôi thường cố gắng nói những điều theo cách " hy vọng điều này sẽ giúp ích", vì cho rằng rất thường xuyên nguyên nhân thực sự của mọi thứ không phải là những gì bạn nghĩ. Một lần nữa, tôi đồng ý rằng câu trả lời của bạn điều mà người ta nên thử, và do đó đáng để xem xét như một câu trả lời được gửi, nhưng cụm từ đôi khi ảnh hưởng đến mọi người nhiều hơn nó nên.
Erhannis
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.