2011-11-09 10 views
0

短編小説のmxmlcコンパイラ - ソース・パスは、ライブラリパス

同じクラスのソース・パスに再びシンボルリンケージクラスとしてSWFライブラリでmxmlcコンパイラに渡されているよりも優先します。しかし、コンパイラはsource-pathの定義を使用するため、そのクラスの新しいインスタンスを作成してもライブラリシンボルの新しいインスタンスは作成されません。コンパイラがシンボルにリンクされた定義(SWCからの定義)を優先するようにコンパイラに指示するにはどうすればよいですか?

長い話

私はFLAファイルで私の設計資産を持っており、それらは、クラス(例えば「com.myproject.view.MyAsset.as」)にリンクされています。次に、これらのアセットをSWCライブラリにエクスポートし、コンパイラに渡します。今、クラスのインスタンス(new MyAsset();)を作成すると、それはライブラリオブジェクトの新しいインスタンスになります。

しかし、ソースフォルダには他のクラスもあります(たとえば "com.myproject.model。*"など)ので、ソースフォルダもコンパイラに渡す必要があります。ライブラリオブジェクトに割り当てられているSWCからではなく、ソースパスからのMyAsset.as定義です。したがって、MyAssetの新しいインスタンスを作成すると、ライブラリオブジェクトは複製されません。

コンパイラにSWCから定義を好む?

おかげ

+0

この問題の解決方法を見つけましたか? –

+0

番号。 FLAのシンボルの名前を一意の名前(例:com.myproject.view.MyAsset_design)に変更し、GetDefinitionByNameを使用してシンボルをインスタンス化する必要がありました。 –

答えて

0
I have the same class defined in SWF library and in a source folder. I need to include both the library and the source folder, how do I tell the compiler which one to prefer? 

同じクラスでは、パッケージ構造に加えて正確に同じコードを持つクラスがあることを意味しますか?その場合は、コードの重複を避けるためにリファクタリングを強くお勧めします。メモリが私に役立つなら、あなたの 'ソースフォルダ'のものが優先されます。あなたの経験と一貫しています。

それ以外の場合は、名前の競合を避けるために、1組のクラスの名前を変更する必要があります。

+0

同じクラスです。まず、ライブラリシンボルのリンケージクラスとして使用されます。そのシンボルはSWCにエクスポートされます。しかし、同じクラスがソースパスのmxmlcコンパイラで使用可能な場合は、リンクされたシンボルなしで使用されます。 –

+0

これは同じクラスの場合です。なぜどちらがコンパイラによって使用されるかは重要ですか? – JeffryHouser

+0

ライブラリシンボルのリンケージクラスとして使用され、SWCとしてエクスポートされたインスタンスをインスタンス化すると、そのシンボルの新しいインスタンスが作成されます。 –