Flex3でも例えばAS3のビジュアルパーツをApplicationを含めた「コンテナ」に子として追加する場合、UIComponentにくるまないといけないという制約があったよね。
これはFlexビジュアルコンポーネントとして最低限のメソッドやプロパティを含めるための措置。
例えばある自作の画像クラスを追加する場合、
var flexComp:UIComponent = new UIComponent();
var imgIns:ImgClass = new ImgClass(); // 画像クラス
flexComp.addChild(imgIns);
addChild(flexComp);
としなければならない。
Flex4でも当然こういった制約がある。
MXコンポーネントは同じようなものだけど、s:Applicationを含めたSparkコンポーネント(コンテナ)に関しては内部的にちょっと変化している。
それは、
SparkコンテナはIVisualElementインターフェースを実装したコンテンツのみ含めることが出来る。
というもの。
UIComponentはこれを実装しているので自作AS3パーツなどは上記Flex3の例と同様の措置でおk。
(最後のaddChild()をaddElement()にする必要有り)
これはaddElement()の引数の型でも分かる。
http://help.adobe.com/ja_JP/AS3LCR/Flex_4.0/spark/components/SkinnableContainer.html#addElement%28%29
※インターフェースはスーパークラス扱いになる。
IVisualElementを実装しているクラスは他にもある。
GraphicElement
SpriteVisualElement
UIMovieClip
例えばベクター描画を行うRect,EllipseやBitmapImageなどはGraphicElementを拡張しているのでSparkコンテナに追加できる。
でも気をつけないといけないのは、Flex4SDK環境上でこれらをMXコンテナに入れたいとき。
UIComponentを拡張していないので入れることが出来ない。
そのときはGroupの子にして追加してやればおk。
Flash Builder 4 and Flex 4 Bible/David Gassner

¥4,929
Amazon.co.jp
これはFlexビジュアルコンポーネントとして最低限のメソッドやプロパティを含めるための措置。
例えばある自作の画像クラスを追加する場合、
var flexComp:UIComponent = new UIComponent();
var imgIns:ImgClass = new ImgClass(); // 画像クラス
flexComp.addChild(imgIns);
addChild(flexComp);
としなければならない。
Flex4でも当然こういった制約がある。
MXコンポーネントは同じようなものだけど、s:Applicationを含めたSparkコンポーネント(コンテナ)に関しては内部的にちょっと変化している。
それは、
SparkコンテナはIVisualElementインターフェースを実装したコンテンツのみ含めることが出来る。
というもの。
UIComponentはこれを実装しているので自作AS3パーツなどは上記Flex3の例と同様の措置でおk。
(最後のaddChild()をaddElement()にする必要有り)
これはaddElement()の引数の型でも分かる。
http://help.adobe.com/ja_JP/AS3LCR/Flex_4.0/spark/components/SkinnableContainer.html#addElement%28%29
※インターフェースはスーパークラス扱いになる。
IVisualElementを実装しているクラスは他にもある。
GraphicElement
SpriteVisualElement
UIMovieClip
例えばベクター描画を行うRect,EllipseやBitmapImageなどはGraphicElementを拡張しているのでSparkコンテナに追加できる。
でも気をつけないといけないのは、Flex4SDK環境上でこれらをMXコンテナに入れたいとき。
UIComponentを拡張していないので入れることが出来ない。
そのときはGroupの子にして追加してやればおk。
Flash Builder 4 and Flex 4 Bible/David Gassner

¥4,929
Amazon.co.jp