Flashで何かを描画したいときはいつでも、スプライトやムービークリップの代わりにfl.core.UIComponentをサブクラス化します。これは、幅と高さがより適切に実装されているためです(NBこれはFlex UIComponentではありません)。
それはあなたのプロジェクトの要件にかなり依存すると思います。他のfl.controlsを使用している場合は、さまざまな理由(dataProvidersまたは他のデータを使用して渡すなど)で、カスタムコンポーネントを残りのフラッシュコンポーネントと互換性があるようにすることが理にかなっている場合があります。
たとえば、UIComponentの優れたユースケースであるボタンがあるが、ボタンにはアイコン、テキスト文字列、および開示矢印があるとします。すなわち3人の子供。これらの3つの子もUIComponentsとして作成します。
Buttonコンポーネント(fl.controls.Button)には、 setStyle()を使用して設定したアイコンが既に含まれているため、この例は特に適切ではありません。
myButton.setStyle("icon", MyIconClass);
幅/高さのメソッドとプロパティをオーバーライドする独自のスプライトのサブクラスを作成できることは知っていますが、この方法でUIComponentを使用することの欠点はありますか?
個人的には、物事をできるだけシンプルに保つようにしています。UIComponentをサブクラス化する必要がある場合は、それを選択しますが、Flash V3コンポーネントアーキテクチャ(fl.controls)を使用したコンポーネントのライフサイクルに注意してください。より多くのインスタンスを使用するとパフォーマンスの問題が顕著になる可能性があるため、頻繁にコミット/無効化しないようにしてください。
JeffKamererによるFlashでのActionScript3.0コンポーネントの作成に関する非常に優れたdevnetの記事シリーズがあります。取り上げるトピックの一部を次に示します。
- コンポーネントのムービークリップシンボルにレイヤーとフレームを設定します
- コンポーネントにライブプレビューを実装する
- ディスパッチイベント
- スタイルと簡単に編集可能なスキンをサポート
- 無効化モデルを使用して図面を管理する
- フォーカスを管理する
- キーボード入力を処理する
- ActionScript定義用にコンパイルされたクリップシムを作成します
- コンポーネントを[コンポーネント]パネルに配置します
つまり、UIComponentsをサブクラス化せずにサイズ変更/配置を処理できる場合は、それをお勧めします。シンプルであるほど良い。また、プロジェクトの一部を移行する必要がある場合は、V3コンポーネントに依存関係を導入することはありません。UIComponentsをサブクラス化する必要がある場合は、可能な限りシンプル/軽量に保ちます。個人的には、すでに十分に複雑だと思いますが、少なくともV2(actionscript 2)コンポーネントよりも優れています。
HTH