私はFlashプロジェクトを持っています、そしてそれは多くのソースファイルを持っています。私はかなり頻繁に使われるクラスを持っています。それをJenineと呼びます。私は最近(そしておそらく、真剣に)Jenineをある名前空間から別の名前空間に移動しました。私たちは準備ができていたと思いました - それは時間だと思いました。新しいJenineはあらゆる点で優れていました - コードの膨大さを失い、いくつかの痕跡クラスの関係から切り離され、ついに自分の心の中でひそかに知られていた名前空間に戻りました。所属していた。彼女は彼女自身の一種でした。
残念ながら、Flashにはそれがありません。おそらくそれは添付ファイルを形成していました。多分それは 欲しくない / Jenineが分離されることを望みません。どちらにしても、それはその記憶の中でJenineの古い、完璧なバージョンにしがみついていました。それは進むことを拒んだ。それは彼女の(関数)呼び出しを無視しました。それは彼女の新しい、公共のインターフェースを忘れようとしました。代わりに、それが構築したJenineのすべてのインスタンスは、常にその古いクラスのクラスパスまでのコピーでした。
var jenineInstance:Jenine = new Jenine();
trace( getQualifiedClassName(jenineInstance));
// Should print: com.newnamespace.subspace::Jenine
// Prints: com.oldnamespace.subspace::Jenine
// Ah, young love!
私たちはケンカした。私が言ったことやしたことを誇りに思うことはありません。結局、猛烈な怒りの中で、私はJenineのすべての参照を完全に削除しました。彼女は完全にシステムから完全に消されました。私のカーソルは、小箱の冷たいふたのような「ゴミ箱を空にする」メニューオプションに落ちました。
私はFlashが回復したとは思わない。今日に至るまで、それはまだジェニーヌの記憶にしがみついています。彼女の古くて不完全な定義は、私のプロジェクトに放棄された幽霊のようにまだ浮かんでいます。私がFlashを強制的にコンパイルするときはいつでも、それはまだ彼女を私の映画に愛情をこめて挿入し、小さな神社のような他の生きているクラスの中で彼女の定義をぎゅっとつかみます。彼らが彼女に会えるかな?.
Flashと私はもう話しません。私は自分のコードを書いてコンパイルします。 Summerという名前の新しい女の子が、Jenineとほぼ同じ姿をしています。まるで誰かが自分のソースコードの卸売りを新しいクラスにコピーしたかのようですが、Flashは何の関心も示していません。私が見ていないと思うとき、ほとんどの日それはただ暴れ回って私のコメントに悪い詩を書きます。
Flashコードベースである恐ろしいダークラグーンの中で、これが単なる痛みを伴う波紋に過ぎないことを私は他に誰も似たような経験をしたことがないと思います。もしあなたが持っている、あるいはコンパイラが使用しているどんなキャッシュを消去するのか、あなたが持っている、またはあなたが何か考えを持っているならば、助けてください。
FlashにはまだASOファイルがあります。これは、クラス用にコンパイルされたバイトコードです。 Windowsでは、ASOファイルはここにあります。
C:\Documents and Settings\username\Local Settings\Application Data\Adobe\Flash CS4\en\Configuration\Classes\aso
Macでは、ディレクトリ構造は/Users/username/Library/Application Support/
と似ています。
これらのファイルは手動で削除することも、FlashではControl->Delete ASO files
を選択して削除することもできます。
あなたのASOファイルを削除してみてください。
ASOファイルは、クラスファイルのコンパイル済みバージョンをキャッシュしたものです。 IDEは変更があったときに古いキャッシュを手放すのにはるかに優れていますが、時々手動でそれらを削除しなければなりません。 ASOファイルを削除するには、次の操作を行います。Control> Delete ASO Filesをクリックします。
これはまたCS3でもたらされた「私は見たことがない私が変更したのでそう、私はトレースを追加しなさい今すべてがはたらく」バグの原因である。
他のマシンを使ってコンパイルしたらどうなりますか?新しくインストールされたものは素敵でしょう。 あなたのマシン が嫉妬しないことを願います。
私は役立つかもしれない1つの関連した行動を見つけました(あなたの特定の問題がより深く動くように思われる):
Flashは、タイムスタンプを見てソースファイルの再コンパイルが必要かどうかを確認します。コンパイルされたバージョンがソースファイルより より古い の場合、再コンパイルされます。しかし、コンパイルされたバージョンが同じソースファイルから生成されたものかどうかはチェックしません。
具体的には、アクションスクリプトファイルがバージョン管理下にあり、変更を元に戻す場合、元に戻すファイルのタイムスタンプは通常古いものになり、Flashはそれを無視します。
また、あなたの新しい名前空間クラスを使用するためにあなたもすることができます
var jenine:com.newnamespace.subspace.Jenine = com.newnamespace.subspace.Jenine()
いくつかのswfファイルがありますか?クラスがいずれかのswfにインポートされている場合、他のswfも同じバージョンのクラスを使用します。 1つのswfに*を含む1つの古いインポートはそれを行います。すべてを再コンパイルし、それが機能するかどうかを確認してください。
プロジェクトフォルダ全体のファイル内で文字列grep
とoldnamespace
を検索するには、Jenine
アナログを使用します。次に、次に何をするべきかを知っているでしょう。