it-swarm.asia

Flash CS4 menolak untuk melepaskannya

Saya memiliki proyek Flash, dan memiliki banyak file sumber. Saya memiliki kelas yang cukup banyak digunakan, sebut saja Jenine. Saya baru-baru ini (dan, mungkin, tanpa perasaan) memindahkan Jenine dari satu namespace ke yang lain. Saya pikir kami sudah siap - saya pikir sudah waktunya. Jenine baru lebih baik dalam segala hal - dia telah kehilangan beberapa kode mengasapi, dia memisahkan dirinya dari beberapa hubungan kelas sisa, dan dia akhirnya pulang ke namespace yang dia selalu diam-diam dikenal di dalam hatinya adalah dia yang dia benar-benar milik. Dia termasuk di antara kaumnya sendiri.

Sayangnya, Flash tidak memilikinya. Mungkin itu telah membentuk keterikatan. Mungkin tidak ingin Jenine dipisahkan. Bagaimanapun, itu melekat pada versi Jenine yang lama dan sempurna dalam ingatannya. Itu menolak untuk pindah. Itu mengabaikan panggilan (fungsinya). Itu mencoba melupakan antarmuka publiknya yang baru. Sebaliknya, setiap instance Jenine yang dibuatnya selalu merupakan salinan dari versi lama, hingga kelasnya:

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

Kami berkelahi. Saya tidak bangga dengan beberapa hal yang saya katakan atau lakukan. Pada akhirnya, dalam kemarahan yang menjulang tinggi, aku menghapus semua referensi Jenine sepenuhnya. Dia benar-benar dihapus dari sistem. Kursor saya jatuh pada opsi menu "Empty Trash" seperti tutup peti yang dingin.

Saya tidak berpikir Flash pernah pulih. Sampai hari ini masih melekat pada ingatan Jenine. Definisinya yang lama dan tidak sempurna masih mengambang di proyek saya seperti hantu yang ditinggalkan. Setiap kali saya memaksa Flash untuk mengkompilasi, itu masih dengan penuh kasih memasukkan dia ke dalam film saya, meringkuk definisinya di antara yang lain, kelas hidup, seperti kuil kecil. Aku ingin tahu apakah mereka bisa melihatnya.

Flash dan saya tidak benar-benar berbicara lagi. Saya menulis kode saya, mengkompilasinya. Ada seorang gadis baru di kota bernama Summer yang terlihat hampir identik dengan Jenine, seolah-olah seseorang baru saja menyalin kode sumbernya grosir ke kelas baru, tetapi Flash belum menunjukkan minat. Sebagian besar hari itu hanya melamun dan menulis puisi buruk di komentar saya ketika itu berpikir saya tidak melihat.

Saya harap tidak ada orang lain yang memiliki pengalaman serupa, bahwa ini hanya riak tunggal, menyakitkan di laguna gelap yang mengerikan yaitu basis kode Flash. Adakah yang tahu cara menghapus cache apa pun yang digunakan kompiler?

2724
Ender

Flash masih memiliki file ASO, yang merupakan kode byte yang dikompilasi untuk kelas Anda. Di Windows, Anda dapat melihat file ASO di sini:

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

Pada Mac, struktur direktori mirip dengan /Users/username/Library/Application Support/


Anda dapat menghapus file-file itu dengan tangan, atau di Flash Anda dapat memilih Control->Delete ASO files untuk menghapusnya.

698
wpjmurray

Coba hapus file ASO Anda.

File ASO di-cache versi terkompilasi dari file kelas Anda. Meskipun IDE jauh lebih baik dalam melepaskan cache lama saat perubahan dilakukan, terkadang Anda harus menghapusnya secara manual. Untuk menghapus file ASO: Kontrol> Hapus File ASO.

Ini juga penyebab bug "Saya-tidak-melihat-perubahan-saya-jadi-biarkan-saya-tambahkan-jejak-sekarang-semuanya-bekerja" yang diperkenalkan di CS3.

198
Magocto

Bagaimana jika Anda mengompilasinya menggunakan komputer lain? Yang baru diinstal akan menyenangkan. Saya harap mesin Anda tidak cemburu.

164
Rodrigo Strauss

Saya telah menemukan satu perilaku terkait yang mungkin membantu (sepertinya masalah spesifik Anda berjalan lebih dalam):

Flash memeriksa apakah file sumber perlu dikompilasi ulang dengan melihat cap waktu. Jika versi yang dikompilasi adalah lebih tua daripada file sumber, itu akan dikompilasi ulang. Tetapi tidak memeriksa apakah versi yang dikompilasi dihasilkan dari file sumber yang sama atau tidak.

Khususnya, jika Anda memiliki file actioncript Anda di bawah kontrol versi, dan Anda Kembalikan perubahan, file yang dikembalikan biasanya memiliki timestamp yang lebih lama, dan Flash akan mengabaikannya.

125
Laurie Cheers

Juga, untuk menggunakan kelas namespace baru Anda, Anda juga dapat melakukannya

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

Apakah Anda memiliki beberapa file swf? Jika kelas Anda diimpor di salah satu swf, swf lain juga akan menggunakan versi kelas yang sama. Satu impor lama dengan * dalam satu swf akan melakukannya. Kompilasi ulang semuanya dan lihat apakah itu berhasil.

97
Dave

Gunakan analog grep untuk menemukan string oldnamespace dan Jenine di dalam file di seluruh folder proyek Anda. Maka Anda akan tahu langkah apa yang harus dilakukan selanjutnya.

11
Ark-kun