Pertanyaan Flash CS4 menolak untuk melepaskan


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) merelokasi Jenine dari satu namespace ke namespace lain. Saya pikir kami sudah siap - saya pikir sudah waktunya. Jenine baru lebih baik dalam segala hal - dia telah kehilangan beberapa kode, dia telah memisahkan dirinya dari beberapa hubungan kelas vestigial, dan akhirnya dia pulang ke ruang nama yang selalu dia rahasiakan di dalam hatinya adalah yang dia benar-benar milik. Dia termasuk jenisnya sendiri.

Sayangnya, Flash tidak akan memilikinya. Mungkin itu telah membentuk keterikatan. Mungkin tidak ingin Jenine akan dipisahkan. Either way, itu menempel versi lama, sempurna Jenine dalam ingatannya. Itu menolak untuk melanjutkan. Itu mengabaikan panggilan (fungsinya). Itu mencoba melupakan antarmuka barunya, publik. Sebagai gantinya, setiap contoh Jenine yang dibangun selalu merupakan salinan dari versi lama, turun ke jalur 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, saya menghapus semua referensi Jenine sepenuhnya. Dia benar-benar, benar-benar terhapus dari sistem. Kursor saya jatuh pada opsi menu "Empty Trash" seperti penutup peti dingin.

Saya tidak berpikir Flash pernah pulih. Sampai hari ini masih melekat pada memori Jenine. Definisinya yang lama dan tidak sempurna masih mengambang dalam proyek saya seperti hantu yang ditinggalkan. Setiap kali saya memaksakan Flash untuk mengkompilasi, ia masih dengan penuh kasih memasukkannya ke dalam film saya, mengukuhkan 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, itu mengkompilasi. Ada seorang gadis baru di kota bernama Summer yang terlihat hampir identik dengan Jenine, seolah-olah seseorang baru saja menyalin kode sumbernya ke dalam kelas baru, tetapi Flash belum menunjukkan minat. Hampir setiap hari itu hanya bermalas-malasan dan menulis puisi buruk di komentar saya ketika berpikir saya tidak melihat.

Saya harap tidak ada orang lain yang memiliki pengalaman serupa, bahwa ini hanya ripple tunggal yang menyakitkan di laguna gelap yang mengerikan yang merupakan basis kode Flash. Jika, dengan beberapa kesempatan kebetulan yang Anda miliki, atau Anda tahu cara menghapus cache apa pun yang digunakan kompilator, tolong, tolong bantu.


2694
2018-02-03 17:32


asal


Jawaban:


Flash masih memiliki file ASO, yang merupakan kode byte 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 serupa di /Users/username/Library/Application Support/ 


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


693
2018-02-03 18:49



Coba hapus file ASO Anda.

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

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


198
2018-02-03 18:40



Bagaimana jika Anda mengkompilasinya menggunakan komputer lain? Yang baru dipasang akan menyenangkan. saya harap mesin Anda tidak cemburu.


164
2018-02-03 20:25



Saya telah menemukan satu perilaku terkait yang dapat membantu (terdengar seperti masalah spesifik Anda berjalan lebih dalam):

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

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


125
2018-02-03 18:04



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

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

102
2018-02-05 16:55



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. Mengkompilasi ulang semuanya dan melihat apakah itu berfungsi.


96
2018-02-04 04:26



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


10
2017-07-02 01:41