1

[編集:短いバージョン-あるSWCの名前空間のクラスが別の名前空間よりも少ない場合、SWCファイルでの名前空間の衝突を適切に処理するにはどうすればよいですか?]

Flash Builderで構築しているかなり大きなFlashアプリケーションがあり(Flash IDEでのコーディング/デバッグは...良くないため)、リンクしている外部SWCファイルが大量にあります。応用。これはこれまでのところうまく機能しています-ファイルサイズは大きいですが、特に各SWCのほとんどのクラスを拡張し、その方法でカスタムコードを追加しているため、SWFにロードするよりもはるかに簡単です(非常に設計的です-重いアプリ。)私が抱えている問題は、ComboBoxやTextInputなどのFlashコンポーネントが複数のSWCにある場合です。最後にコンパイルされたSWCはどちらでも正常に機能しますが、他のSWCは次のようなエラーで失敗します。

TypeError: Error #1034: Type Coercion failed: cannot convert flash.display::MovieClip@1f21adc1 to fl.controls.TextInput.
    at flash.display::Sprite/constructChildren()
    at flash.display::Sprite()
    at flash.display::MovieClip()
    at com.company.design.login::LoginForm()
    at com.company.view::Login()[/Users/ken/Workspace/src/com/company/view/Login.as:22]
    at com.company.view::Main/showLogin()[/Users/ken/Workspace/src/com/company/view/Main.as:209]
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at com.company.view::Navigation/handleUIClick()[/Users/ken/Workspace/src/com/company/view/Navigation.as:88]

コンポーネントやComponentShimなどを調査してきましたが、レンガの壁にぶつかっています。一部のコンポーネントのスキンがソースFLAで変更されている可能性があると考えたため、デフォルトのスキンに置き換えてみましたが、効果がなかったようです。コンポーネントをインポートしてすべてのクラスで使用できるようにしながら、それらをスキンしてさまざまなFLAに含めることができるようにするにはどうすればよいですか?(私はそれらの新しいインスタンスを作成することはありません。それらはすべて私のデザイナーによってレイアウトされています。)

4

2 に答える 2

1

これが役立つかどうかはわかりませんが、メインプロジェクトのクラスの視覚的表現であるSWCライブラリのアセットで同様の問題が発生しました。私がやったことは、ビジュアルアセットを、同じ名前ではなく、プロジェクト内のクラスを拡張するFlashで作成されたクラスにすることでした。

たとえば、私のアセットとクラスは両方ともcom.blah.TitleBackgroundでした。この問題を修正するために、ビジュアルアセットにcom.blah.TitleBackgroundAssetのクラスを設定し、コンポーネントの基本クラスをcom.blah.TitleBackgroundに設定しました。それは私にとってこの特定の問題を修正しました。私はまだまだ道を譲る必要がありますが、あなたの投稿は、名前の競合を回避するための解決策のアイデアを引き起こしました。

于 2010-04-09T15:29:50.757 に答える
1

詳細な修正が見つかりません(明らかに、当時使用していた仕事用メールは、知らないうちに古いメッセージを破棄していました!)が、簡単な答えは、使用したいすべてのコンポーネントを含む1つのFLAを作成することです。それらのコンポーネント(およびComponentShim)を「ランタイム共有用にエクスポート」します。次に、他のFLAで、コンポーネントが必要なときはいつでも、コンポーネントFLAライブラリからドラッグします([ランタイム共有のインポート]がオンになっている状態でメインライブラリに表示されます)。メインライブラリ。FLAと同じフォルダにコンパイル済みコンポーネントのSWFファイルが必要です。

これにより、スキンを含むすべてのコンポーネントコードが1つの中央の場所に保持されるため、コンパイル時に(SWFまたはSWCとして、この問題は主にSWCを使用すると発生しますが)、競合は発生しません。

于 2010-10-14T03:30:06.533 に答える