描画の要?
MXMLでのアプリケーション開発は、コンポーネントをペタペタ貼り付けて作っていきますが、
当然これらのコンポーネントだけで開発するわけではありません。
用意したビットマップを貼り付けたり、物体を大量生成してニヤニヤしたりもするはずです。
僕がこれまでActionScriptプロジェクトで多く使用してきた「Sprite」ですが、
コンポーネントである「Panel」に「addChild」してみると、
TypeError: Error #1034: 強制型変換に失敗しました。flash.display::Sprite@100ef51 を mx.core.IUIComponent に変換できません。
というランタイムエラーがでてうまくいきません。
「Sprite」はFlexプロジェクト中では使えないのか?
と思っていましたが、適当に調べていくうちに「Image」というコンポーネントの存在を知りました。
具体的なコードでの実験を示します。
まずは「Panel」に直接「Sprite」を「addChild」します。
var p:Panel = new Panel(); p.addChild(new Sprite());
これを実行しますと、上で書いたようなランタイムエラーが出ます。
「Sprite」の代わりに「Shape」で試しても同じようなランタイムエラーが出ます。
これを「Panel」と「Sprite」の間に「Image」を挟んで「addChild」してみます。
var p:Panel = new Panel(); var img:Image = new Image(); img.addChild(new Sprite()); p.addChild(img);
これで実行してみますと、特にエラーも無く問題無く動くようです。
「Sprite」の代わりに「Shape」で試しても結果は同じです。
この結果から『予想』します。
「Image」へならこれまでの「Sprite」や「Shape」などの描画の基本を「addChild」できる。
つまりActionScriptプロジェクトで行ってきた描画方法が使える。
はたしてこの考えでいいのでしょうか。
今後試してみます。